+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&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
-------------------------------------------------------------
* ------------------
*/
-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
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'])
);
* 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]);
/*
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
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
- * Definir le lien de traduction ver sun objet de reference
+ * Definir le lien de traduction vers un 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
// 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.
// 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'].=
."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;
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)
$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
// 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;
}
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;
}
}
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
$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'];
// 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;
}
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];
$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])) {
// 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;
$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;
}
}
* @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
*
* @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
*
* @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
*
) {
// 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;
}
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'])
$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 {
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;
$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;
}
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");
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"];
* - 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)
* @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=''){
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()
// 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;
'hi' => "हिंदी",
'hr' => "hrvatski",
'hu' => "magyar",
- 'hy' => "Armenian",
+ 'hy' => "Հայերեն",// Arménien
'ia' => "Interlingua",
'id' => "Indonesia",
'ie' => "Interlingue",
'ka' => "ქართული",
'kk' => "қазақ тілі", // Kazakh
'kl' => "kalaallisut",
- 'km' => "Cambodian",
+ 'km' => "ភាសាខ្មែរ",// Khmer
'kn' => "Kannada",
'ko' => "한국어",
'kok' => "कोंकणी", // Konkani
'oc_lnc' => "òc lengadocian",
'oc_ni' => "òc niçard",
'oc_ni_la' => "òc niçard (larg)",
+ 'oc_ni_mis' => "òc nissart (mistralenc)",
'oc_prv' => "òc provençau",
'oc_gsc' => "òc gascon",
'oc_lms' => "òc lemosin",
// 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;
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)
// 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
$debugverb = "$fi:L$l:$fu"."():";
}
- $m = date("M 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:')
$titre = ($titre == 'install')
? _T('avis_espace_interdit')
: $titre . ' : '. _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)
// 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;
}
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']));
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();
-<?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>";
+}
+
+?>
}
// 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;
}
// 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
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
@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);
$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 :
// 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;
}
}
*
*/
-$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:
*/
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);
+ }
}
}
}
// 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){
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;
* @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']);
}
$return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>";
}
- return $return
- . ((!$no_transform AND $mode == 'div')
- ? "\n\n"
- : ''
- );
-;
+ return $return;
+
}
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
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
$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)
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'];
}
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 ***
// 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;
$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;';
}
}
}
* @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 );
}
/**
throw new Exception('YQL: réponse vide ou mal formée');
return false;
}
- return (array) $w;
+ return inc_object_to_array($w);
}
/**
* @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)){
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{
// 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',
--- /dev/null
+<?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' => '<plugin> 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>< !DOCTYPE html></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:'
+);
+
+?>
--- /dev/null
+<?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'
+);
+
+?>
--- /dev/null
+<?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'
+);
+
+?>
'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',
--- /dev/null
+<?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'
+);
+
+?>
--- /dev/null
+<?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é'
+);
+
+?>
<paquet
prefix="spip"
categorie="outil"
- version="3.0.17"
+ version="3.0.19"
etat="stable"
compatibilite="];["
schema="19268"
$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]) {
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)";
// 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] ." | ";
}
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)";
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
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];
}
}
$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;
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) {
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 =
// 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];
}
}
}
// 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;
$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] = '';
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)){
/**
* Inserer une breve en base
- * http://doc.spip.org/@insert_breve
+ * http://code.spip.net/@insert_breve
*
* @param int $id_rubrique
* @return int
* 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
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
// 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
// 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
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);
}
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')
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))
// 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;
'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";
$this->_specialChars = $_specialChars;
}
-// http://doc.spip.org/@pack
+// http://code.spip.net/@pack
function pack() {
$this->_addParser('_basicCompression');
if ($this->_specialChars)
}
// 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);
// 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
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
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)
}
}
-// http://doc.spip.org/@_analyze
+// http://code.spip.net/@_analyze
function _analyze($script, $regexp, $encode) {
// analyse
// retreive all words in the script
}
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\\)');
}
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';
// 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) {
// use high-ascii values
// characters: ¬°¬¢¬£¬§¬•¬¶¬ß¬®¬©¬™¬´¬¨¬≠¬Æ¬Ø¬∞¬±¬≤¬≥¬¥¬µ¬∂¬∑¬∏¬π¬∫¬ª¬º¬Ω¬æ¬ø√Ä√?√Ç√É√Ñ√Ö√Ü√á√à√â√ä√ã√å√?√é√?√?√ë√í√ì√î√ï√ñ√ó√ò√ô√ö√õ√ú√?√û√ü√†√°√¢√£√§√•√¶√ß√®√©√™√´√¨√≠√Æ√Ø√∞√±√≤√≥√¥√µ√∂√∑√∏√π√∫√ª√º√Ω√æ
- // http://doc.spip.org/@_encode95
+ // http://code.spip.net/@_encode95
function _encode95($charCode) {
$res = '';
if ($charCode >= $this->_encoding)
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]/',
$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)){
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
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();
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();
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 '';
}
}
-// http://doc.spip.org/@_backReferences
+// http://code.spip.net/@_backReferences
function _backReferences($match, $offset) {
$replacement = $this->buffer['replacement'];
$quote = $this->buffer['quote'];
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]];
}
var $buffer;
// encode escaped characters
-// http://doc.spip.org/@_escape
+// http://code.spip.net/@_escape
function _escape($string, $escapeChar) {
if ($escapeChar) {
$this->buffer = $escapeChar;
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.'/';
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']] != '')
return $this->buffer['escapeChar'] . $temp;
}
-// http://doc.spip.org/@_internalEscape
+// http://code.spip.net/@_internalEscape
function _internalEscape($string) {
return preg_replace($this->ESCAPE, '', $string);
}
<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"
[<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>
<p class='boutons'><span class='image_loading'> </span><input type='submit' class='submit' value='<:dump:texte_sauvegarde_base:>' /></p>
</div></form>
]
-</div>
\ No newline at end of file
+</div>
'_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;
<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"
[(#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{')'})]})]
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;
+}
?>
|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);
* - 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);
-// 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);
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));
}
-// 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
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"];
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,
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"];
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";
}
-// http://doc.spip.org/@couleur_luminance
+// http://code.spip.net/@couleur_luminance
function couleur_luminance($couleur, $val) {
include_spip('filtres/images_lib');
// 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();
// 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){
// 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;}
// 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());
}
-// 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());
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;
}
-// 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());
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());
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.
// 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());
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:
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');
// 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());
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);
// 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];
// 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());
// 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');
// 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());
// 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;
}
-// http://doc.spip.org/@rtl_reverse
+// http://code.spip.net/@rtl_reverse
function rtl_reverse($mot, $rtl_global) {
$rtl_prec = $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
}
-// 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();
//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:
// 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);
<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"
$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'),
),
);
-?>
\ No newline at end of file
+?>
// 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) {
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)){
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)){
* #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
/**
* 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
* #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
/**
* 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
$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');
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) {
* 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
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
// 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
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
/**\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
$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)
'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');
// 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);
}
// 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';
}
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;
}
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) {
// 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;
}
//
// 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");
}
// 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;
}
-// 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);
}
-// 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);
// 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'");
}
// 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");
* 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
/**
* 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(){
}
-// 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);
// 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');
-// 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));
/**
* 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
}
-// 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)
{
}
-// 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');
* 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
<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"
#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
[<h2><:resultats_recherche:> « (#ENV{recherche}) »</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
<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
//
// <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;
// {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];
// 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
// 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];
// 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;
}
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
#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
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
#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
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
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
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
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
}\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
<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>
// 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');
/**
* 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
/**
* 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
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
* 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
}
/**
- * http://doc.spip.org/@action_copier_local_post
+ * http://code.spip.net/@action_copier_local_post
*
* @param $id_document
* @return bool|mixed|string
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
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);
}
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');
/**
* 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
/**
* Tourner un document
*
- * http://doc.spip.org/@action_tourner_post
+ * http://code.spip.net/@action_tourner_post
*
* @param int $id_document
* @param int $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')
/**
* 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
[<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})]
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());
}
$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')
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 !
// 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)) {
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');
//
// 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');
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') {
// 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');
\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
* @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
//\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
\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
$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
* 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
*/
// 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"])
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
//
// <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;
* @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:
* @param string $file
* @return array
*/
-// http://doc.spip.org/@traite_svg
+// http://code.spip.net/@traite_svg
function metadata_svg_dist($file){
$meta = array();
</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,''}})]
[(#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>
<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"
<!-- Gestion des medias dans SPIP -->
<auteur>Collectif SPIP</auteur>
- <credit>Cédric Morin, Romy Duhem-Verdière pour la médiathèque</credit>
+ <credit>Cédric Morin, Tetue pour la médiathèque</credit>
<traduire module="medias" reference="fr" gestionnaire="salvatore" />
<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="" />
[(#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>
#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;}
* @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');
* @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');
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)){
}
// 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;
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
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'])
}
// 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;
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','');
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
<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"
[(#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})
<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>
* @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='' />";
}
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'))
// 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)) .
// - 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;
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");
# 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");
}
}
-// 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");
}
}
-// 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)){
}
}
-// 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');
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');
'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é',
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
}
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){
$texte = isset($texte[$type])?$texte[$type]:'organiseur:icone_ecrire_nouveau_message';
return _T($texte);
}
-?>
\ No newline at end of file
+?>
<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"
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);
}
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)){
// $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');
* 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
// 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
// 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.
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');
// 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 {
// 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);
// 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;
* 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
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>
<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
/**
- * http://doc.spip.org/@afficher_para_modifies
+ * http://code.spip.net/@afficher_para_modifies
*
* @param string $texte
* @param bool $court
// 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();
// 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);
// 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);
}
}
-// 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);
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()) {
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');
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;
/** 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)) {
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;
'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)
}
-// 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)."))");
//
// 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;
// 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;
// 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();
// 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();
//
// 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));
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;
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");
//
// 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();
// 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++;
// 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();
* - 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
<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"
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
// 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;
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)){
/**
* Inserer un nouveau site en base
*
- * http://doc.spip.org/@insert_syndic
+ * http://code.spip.net/@insert_syndic
*
* @param $id_rubrique
* @return bool
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);
}
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');
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)){
// 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
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();
}
// 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'
* 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
// 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
***************************** Resultat *****************************************
Array
(
- [0] => http://www.spip-contrib.net/backend.php
+ [0] => http://contrib.spip.net/backend.php
)
Array
(
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');
// 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()
// 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(
}
// 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>";
}
-// http://doc.spip.org/@ajouter_tags
+// http://code.spip.net/@ajouter_tags
function ajouter_tags($matches, $item) {
include_spip('inc/filtres');
$tags = array();
// 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,
}
// 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
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));
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
// 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);
}
// 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
// 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;
);
}
// 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);
}
q=
(.*\.|)ecosia\.org
+[Wow]
+q=
+(.*\.|)wow\.com
+
+[Accentice]
+q=
+(.*\.|)accentice\.com
+
#
# Services de mail
#
webmail([0-9]*)\.wanadoo\.fr
www\.laposte\.net
mail([0-9]*)\.voila\.fr
-\/(web)?mail\/
\ No newline at end of file
+\/(web)?mail\/
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
//
// 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)
}
-// http://doc.spip.org/@calculer_visites
+// http://code.spip.net/@calculer_visites
function calculer_visites($t) {
include_spip('base/abstract_sql');
//
// 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);
* 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
*/
* 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
/**
* Recherche des articles pointes par le referer
- * http://doc.spip.org/@referes
+ * http://code.spip.net/@referes
*
* @param $referermd5
* @param string $serveur
/**
* 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
<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"
>
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;
[(#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>
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));
}
-// 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;
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'];
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
// 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'));
// 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']);
}
// 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"
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");
}
<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]">
<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">
<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"
<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>]
/* -- 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; }
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.
*
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 à jojo </nom>
[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>
<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>
<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>
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>
</archive>
-</archives>
+</archives>
\ No newline at end of file
// 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');
// 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;
// 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())
{
// 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);
// 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;
* 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
// '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));
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))
}
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;
* 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
// 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;
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];
// 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
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)
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)
// 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
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))
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,
return $texte;
}
-// http://doc.spip.org/@glossaire_std
+// http://code.spip.net/@glossaire_std
function glossaire_std($terme)
{
global $url_glossaire_externe;
}
-// 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) {
* 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
* 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
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
define('_RACCOURCI_TH_SPAN', '\s*(:?{{[^{}]+}}\s*)?|<');
/**
- * http://doc.spip.org/@traiter_tableau
+ * http://code.spip.net/@traiter_tableau
*
* @param sring $bloc
* @return string
* 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
/**
* 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
/**
* Filtre a appliquer aux champs du type #TEXTE*
- * http://doc.spip.org/@propre
+ * http://code.spip.net/@propre
*
* @param string $t
* @param string $connect
$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))
<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"
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');
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');
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');
<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"
*
*/
-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', '');
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);
* 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
/**
* 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
/**
* 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
*/
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
/**
* 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
* 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
// 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
# 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);
}
// 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))
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);
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);
// 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];
// 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
// 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));
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)) {
// 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))
// 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) {
// 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);
return array($contexte, $entite, $url_redirect, $is_qs?$entite:null);
}
-?>
\ No newline at end of file
+?>
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);
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);
// 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)){
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;
//
// 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);
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
// 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 = '';
}
// 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 = '';
// Autant de criteres conditionnels que de champs
-// http://doc.spip.org/@vertebrer_crit
+// http://code.spip.net/@vertebrer_crit
function vertebrer_crit($v)
{
$res = "";
// 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 = "";
return $res;
}
-// http://doc.spip.org/@public_vertebrer_dist
+// http://code.spip.net/@public_vertebrer_dist
function public_vertebrer_dist($desc)
{
$nom = $desc['table'];
</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)
[(#ENV{editable})
<span class="toggle_box_link"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>[<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>]</span>
+ ><:bouton_changer:><i class="over"> \(#ENV{_label_date}\)</i></a>]</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"/>
</div></form>
]
</div>
-<INCLURE{fond=formulaires/dateur/inc-dateur} />
+<INCLURE{fond=formulaires/dateur/inc-dateur,heure_pas} />
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');
[<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>
]
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[*/
--- /dev/null
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('formulaires/selecteur/generique_fonctions');
--- /dev/null
+<?php\r
+\r
+if (!defined('_ECRIRE_INC_VERSION')) return;\r
+\r
+include_spip('formulaires/selecteur/generique_fonctions');
\ No newline at end of file
--- /dev/null
+<?php
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('formulaires/selecteur/generique_fonctions');
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>]</span>
+ ><:bouton_changer:><i class="over"> \([(#ENV{_langue}|?{[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)],<:info_traductions:>})]\)</i></a>]</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>
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);
// 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;
}
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)});})
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();
}
<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[#ID_ARTICLE]' 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[#ID_ARTICLE]'
+ 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
<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) (#LANG)]</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>,
]
<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>
]
<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>'}}
],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-->
</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'
clear.css
Classes pour faciliter la composition
- Cf.: http://www.spip-contrib.net/3820
+ Cf.: http://contrib.spip.net/3820
-------------------------------------------------------------- */
/* 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};}
.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};}
.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,
typo.css.html
Base typographique
- Cf.: http://www.spip-contrib.net/3820
+ Cf.: http://contrib.spip.net/3820
-------------------------------------------------------------- */
]
clear.css
Classes pour faciliter la composition
- Cf.: http://www.spip-contrib.net/3820
+ Cf.: http://contrib.spip.net/3820
-------------------------------------------------------------- */
form.css
Base pour formulaires
- Cf.: http://www.spip-contrib.net/3820
+ Cf.: http://contrib.spip.net/3820
-------------------------------------------------------------- */
.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; }
typo.css
Base typographique
- Cf.: http://www.spip-contrib.net/3820
+ Cf.: http://contrib.spip.net/3820
-------------------------------------------------------------- */
[<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... ]
$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']='';
* @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');
&& ($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;
}
?>
return $valeurs;
}
-// http://doc.spip.org/@message_oubli
+// http://code.spip.net/@message_oubli
function message_oubli($email, $param)
{
$r = formulaires_oubli_mail($email);
// 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()
<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}>-
-[<a href="[(#URL_RUBRIQUE|url_absolue)]" rel="directory">(#TITRE|supprimer_tags|texte_backend)</a>]
+[<a href="[(#URL_RUBRIQUE|url_absolue|texte_backend)]" rel="directory">(#TITRE|supprimer_tags|texte_backend)</a>]
</BOUCLE_rubrique_mf><B_mots_mf>
/ <BOUCLE_mots_mf(MOTS){id_article}{", "}>
-[<a href="[(#URL_MOT|url_absolue)]" rel="tag">(#TITRE|texte_backend)</a>]</BOUCLE_mots_mf>
+[<a href="[(#URL_MOT|url_absolue|texte_backend)]" rel="tag">(#TITRE|texte_backend)</a>]</BOUCLE_mots_mf>
</description>
][<div class='rss_chapo'>(#CHAPO|texte_backend)</div>
][<div class='rss_texte'>(#TEXTE|
image_reduire{500,0}|texte_backend)</div>
- ][<div class="hyperlien"><:voir_en_ligne|html2unicode:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]}|texte_backend)]</a></div>
+ ][<div class="hyperlien"><:voir_en_ligne|html2unicode:> : <a href="(#URL_SITE|texte_backend)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]}|texte_backend)]</a></div>
][<hr />
<div class='rss_notes'>(#NOTES|texte_backend)</div>
][<div class='rss_ps'>(#PS|texte_backend)</div>]
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>
<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"
# @template: #SQUELETTE
User-agent: *
+Allow: /local/cache-css/
Disallow: /local/
Disallow: /ecrire/
Disallow: /plugins-dist/
<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