1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/spip_ynh.git synced 2024-09-03 20:25:59 +02:00

Upgrade to SPIP 3.0.21

This commit is contained in:
Genma 2016-01-02 16:34:42 +01:00
parent 3ddd6d4567
commit 9da80e7143
239 changed files with 4917 additions and 1387 deletions

View file

@ -1,4 +1,244 @@
SPIP-Core spip-3.0.20 -> spip-3.0.21 31 octobre 2015
-------------------------------------------------------------
r22267 | cedric | (mer. 24 juin 2015) | Quand la source image est dans IMG/ et contient une query-string complexe et que le fichier existe sans la query-string, on l'ignore. Repare le traitement des images qui ont une URL restreinte basee sur la query-string+htaccess
r22282 | fil | (lun. 29 juin 2015) | report de #22281 (https://core.spip.net/issues/3456)
r22315 | cedric | (lun. 20 juil. 2015) | Reparer la desinstallation des plugins dans _DIR_PLUGINS_SUPPL
r22326 | cedric | (ven. 24 juil. 2015) | Report de r22325 : Fix #3504 : purge des autosave cvt en session
r22327 | cedric | (ven. 24 juil. 2015) | Report de r21817 : 0 est une valeur acceptable pour un champ obligatoire (Frederic, Pierretux)
r22342 | cedric | (sam. 25 juil. 2015) | Fix #3510 : parametre_url sur les arguments de type tableau. On backporte la version du trunk 3.1 sur laquelle le bug a ete corrige
r22344 | cedric | (dim. 26 juil. 2015) | Report de r22343 : Fix #3494 : quand la date de redaction anterieure est utilisee, il faut pouvoir l'editer sur un article en cours de redaction, comme avant, mais sans permettre l'edition de la date.On robustifie traiter() en verifiant le droit a edition qui a ete calcule dans charger() avant de prendre en compte les request, ce qui evite tout risque de manipulation du form et d'injection d'input en html+ Report de r22338 au passage
r22362 | kent1 | (mar. 28 juil. 2015) | Récupérer le title et le hreflang du lien entourant un modèle cf #3516
r22384 | kent1 | (mer. 12 août 2015) | Gros bug sur r22282 (cf #3456)Le passage en liens absolus se faisait uniquement sur le premier href ou src, remplaçant le premier href ou src par le dernier href / src présent dans le texte...On ne remplaçait plus lien par lien
r22392 | erational | (mar. 25 août 2015) | report de c22360
r22393 | erational | (mar. 25 août 2015) | arménien en code HTML
r22402 | rasta | (jeu. 03 sept. 2015) | RAH. On corrige enfin ce fichu gros bug du compilateur qui faisait qu'on ne pouvait pas avoir un critère conditionnel ET plusieurs arguments.Ça marchait pour les critères sans arguments ou avec un seul argument.La raison ? Non-factorisation et doublonnage de code : actuellement, les critères mêmes persos (pas juste les trucs SQL) qui ont 0 ou 1 arguments, ne passent PAS par le même code que ceux avec 2 ou plus. Alors qu'ensuite le traitement et la regex associée sont quasiment les mêmes… mais pas tout à fait, puisque dans le cas 2 ou plus ça ne cherchait pas le "?".Pour l'instant on corrige juste le bug, mais il faudrait nettoyer le code et factoriser pour ne plus générer d'erreur de ce genre…Au passage, pour SPIP 3.0, on backport la correction du "_" manquant qui faisait, là aussi qu'avec 2 arguments ou plus, on avait pas le droit d'avoir des critères avec_plusieurs_mots, alors qu'on peut avec 0 ou 1 argument. Même raison : code fait deux fois différemment, dont la regex.
r22434 | erational | (ven. 16 oct. 2015) | pas d'accent sur Kreyòl (Peyi Dayiti)
r22436 | cedric | (lun. 19 oct. 2015) | On ajoute l'heure de publication au survol de la date, cela est utile pour faire de la programmation intensive d'article a l'avance
r22442 | cedric | (mar. 27 oct. 2015) | Report de r22441 : r17234 a introduit un include_spip() au debut de base/connect_sql.php, ce qui etait une erreur car ce fichier est inclus par inc_version avant toute initialisation du core et chargement des caches.Du coup chaque hit provoquait une invalidation du chemin car find_in_path appele trop tot croyait que son find etait nouveau, donc le hit se finissait par une ecriture du fichier tmp/cache/chemin.txt.Comme ce fichier peut etre assez gros (>100ko) et ecrit en posant un verrou, cela impactait la performance par un debit d'ecriture sur le disque et des possibles attentes entre hit concourants.Bug repere par nicod en 3.0 et confirme par RealET en 3.1
r22444 | cedric | (mar. 27 oct. 2015) | Report de r22443 : Complement a r22441 : ne pas lever le flag en cas de find_in_path appele trop tot si le fichier n'est pas trouve
r22449 | cedric | (jeu. 29 oct. 2015) | Report de r22427 : #3371 Les squelettes de l'espace prive recoivent un flag espace_prive=1 a toute fin utile
r22450 | cedric | (jeu. 29 oct. 2015) | Report de r22428 : Fix #3371 : dans la fonction typo, si un flag espace_prive=1 est present dans le env, on echappe tout html suspect, ie qui ne passe pas a travers safehtml sans censure. Pour limiter l'impact perfo on conditionne l'echappement a la presence des caracteres < et = dans le texte, c'est a dire une balise avec un attribut, ce qui ne traitera donc quasiment aucun contenu par defaut, sauf quelques rares <span lang='en'> ou autre curiosite de ce type
r22451 | cedric | (jeu. 29 oct. 2015) | Report de r22429 : oups oubli dans r22428 : cas de typo appele en php depuis l'espace prive
r22452 | b_b | (jeu. 29 oct. 2015) | report de r22346Fix #3430 : les boucles avec langue utilisaient lang_select_public() qui changeait sauvagement la langue en debut de boucle, sans la restaurer en fin de boucle, provoquant des bugs de contexteOn modifie la compulation des boucles : lang_select_public() appelle toujours lang_select(...) avec eventuellement la langue inchangee, et la boucle finit par un lang_select() qui depile et restaure la langue pour l'iteration suivante.
SPIP-plugins-dist spip-3.0.20 -> spip-3.0.21 31 octobre 2015
-------------------------------------------------------------
r91143 | kent1 | (mar. 28 juil. 2015) | Récupérer le title et le hreflang du lien entourant un modèle cf #3516
r91205 | cedric | (jeu. 30 juil. 2015) | bug lors d'une erreur a la creation d'un mot (confirmation sur un doublon par exexemple)
r91206 | cedric | (jeu. 30 juil. 2015) | complement a r91205
r91209 | cy_altern | (jeu. 30 juil. 2015) | report de 91148 (acces de google bot aux js et css)
r91271 | cedric | (mer. 05 août 2015) | On ne verifie et alerte sur le doublon de titre de mot cle uniquement si c'est un nouveau mot cle ou si on retitre un mot cle existant, sinon c'est penible
r91274 | cedric | (mer. 05 août 2015) | ne pas syndiquer un site en refuse
r91290 | real3t | (ven. 07 août 2015) | Mise à jour pour la reconnaissance des moteurs de recherche. Reportable en 2.1.
r91384 | real3t | (dim. 16 août 2015) | Un paramètre de plus reconnu pour Google
r91608 | kent1 | (jeu. 03 sept. 2015) | Report de la fonctionnalité de z91607"Faire prendre en compte à la prévisu l'hypothétique dir="ltr" ou dir="rtl" sur le textarea"
r91797 | marcimat | (sam. 12 sept. 2015) | Report de r91796 : Le pipeline "afficher_contenu_objet" n'était pas appelé pour l'affichage des groupes de mots sur la page exec=mots.
r92079 | chankalan | (mar. 29 sept. 2015) | pour affichage des colonnes des visites, report de http://zone.spip.org/trac/spip-zone/changeset/91091/ et http://zone.spip.org/trac/spip-zone/changeset/91404/
r92236 | cedric | (sam. 10 oct. 2015) | Report de r92235 : soyons un peu moins bisounours : les diff necessitent aussi un interdire_scripts comme tous les contenus affiches dans l'espace prive
r92513 | b_b | (jeu. 29 oct. 2015) | Report de r92512 : éviter d'afficher le script d'autosave dans la prévisu d'un forum quand le site est en mode parano avec $filtrer_javascript = -1;Ref https://core.spip.net/issues/3413 merci Équipement
r92523 | b_b | (jeu. 29 oct. 2015) | report de r92522 : éviter une erreur PHP Strict Standards: Only variables should be passed by reference (Eric Camus)Ref https://core.spip.net/issues/3373
r92525 | b_b | (jeu. 29 oct. 2015) | version 0.80.27 : report de r92524fix installation d'un plugin qui nécessite un plugin du core sur un site neuf, https://core.spip.net/issues/3572À la fin de svp_ajouter_depot(), utiliser svp_actualiser_paquets_locaux(true) qui, comme son nom l'indique, actualise les paquets locaux puis supprime les paquets locaux avec l'option true.Merci marcimat :)
r92568 | real3t | (sam. 31 oct. 2015) | Et report en 3.0
r92576 | real3t | (sam. 31 oct. 2015) | Sur une suggestion de Franck, intégration de Haosou dont parle cet article.
r92578 | Francky | (sam. 31 oct. 2015) | Il semble que sogou soit un moteur en chinehttp://www.journaldunet.com/solutions/expert/59882/haosoule-moteur-de-recherche-qui-pourrait-changer-le-monde-du-seo-chinois.shtml
r92580 | Francky | (sam. 31 oct. 2015) | Rangement alphabétique
SPIP-Core spip-3.0.19 -> spip-3.0.20 23 juin 2015
-------------------------------------------------------------
r22106 | ben | (sam. 09 mai 2015) | 3.0.20 dev
r22111 | cedric | (sam. 09 mai 2015) | #3418 : loger les creations de table pour debusquer le bug
r22112 | cedric | (sam. 09 mai 2015) | #3418 : purger les opcode cache y compris sur php-fpm (a valider) / Credits pour le patch https://www.drupal.org/node/779482
r22121 | cedric | (dim. 10 mai 2015) | Report de r22115 : realpath pour faire un clear opcode cache
r22122 | cedric | (dim. 10 mai 2015) | Report de r22116 : #3418 : Octave utilise une configuration foireuse de opcode cache, qui persiste 2s apres modification du fichier sans possibilite de l'invalider manuellement. On essaye donc de detecter cette configuration et de faire un sleep() le temps que le cache soit invalide
r22123 | cedric | (dim. 10 mai 2015) | Report de r22118 : Affectation de variable inutile (inutilisée) dans r22116.
r22124 | cedric | (dim. 10 mai 2015) | Report de r22119 : Complement a r22116 : deplacer les de code dans une fonction qui peut resservir dans un plugin si necessaire
r22125 | cedric | (dim. 10 mai 2015) | Report de r22120 : Commenter les logs inutiles de r22111, on conserve la verification et seconde tentative de creation de table en cas d'echec
r22155 | erational | (lun. 18 mai 2015) | un warning de moins.
r22204 | b_b | (ven. 05 juin 2015)| Report de r22203 / Fix #3440 : éviter la disparition du texte du troisième onglet de l'installation sous firefox win$ (merci à Franck pour le signalement)
r22208 | b_b | (mar. 09 juin 2015)| report de r22201 / Fixe #3418 : complément à r22119 ajouter une seconde à la durée de opcache.revalidate_freq, sans quoi on retombe dans le cache
r22246 | cedric | (ven. 19 juin 2015)| Report de r22245 : une option mtime sur purger_repertoire pour supprimer uniquement les fichiers plus anciens que filemtime donne
r22247 | rasta | (ven. 19 juin 2015)| Charger la l'API autoriser avant de l'utiliser… On rappelle que SPIP n'utilise pas d'autoload, et que donc on DOIT TOUJOURS penser à charger les API avant de les utiliser. :)
r22252 | toutati | (dim. 21 juin 2015)| un petit {tout} qui permet d'afficher la liste des traductions, même si l'article a une rubrique en -1 (cas du plugin pages uniques)
SPIP-plugins-dist spip-3.0.19 -> spip-3.0.20 23 juin 2015
-------------------------------------------------------------
r89160 | eric | (ven. 08 mai 2015) | Le décideur prend la première version compatible des plugins dépendants si plusieurs sont disponibles. Autant prendre la version la plus élevée.
r89163 | eric | (ven. 08 mai 2015) | oubli d'incrément.
r89165 | cedric | (ven. 08 mai 2015) | Fix https://core.spip.net/issues/3398 : date_thread ne doit etre mis a jour que si le message est publie
r89169 | franck | (ven. 08 mai 2015) | Ce n'est plus http://core.spip.org mais https://core.spip.net
r89230 | cedric | (sam. 09 mai 2015) | Report de r89229 : Fix https://core.spip.net/issues/2899 : erreur 404 mal geree en urls propres
r89281 | marcimat | (dim. 10 mai 2015) | Corriger #3416 : ne pas afficher obsolète un plugin local en présence d'une version plus élevée du même plugin, mais non compatible avec ce SPIP.Notons que le terme 'obsolète' ne convient pas vraiment. En effet, dans le cas suivants, tous 2 compatibles avec notre SPIP :A : prefixe TOTO | v1.0.0 | stableB : prefixe TOTO | v1.1.0 | stableC : prefixe TOTO | v1.1.1 | testAlors - A est considéré obsolète (OK)- B n'est pas considéré obsolète (OK)- C est considéré obsolète (hum…)En fait un terme 'prioritaire' sur B à true, et false sur les autres aurait été plus adapté. Parce que C n'est pas tellement obsolète,juste plus à jour, mais d'un état inférieur.
r89311 | marcimat | (mar. 12 mai 2015) | Report de r85634 : Eviter des "Warning: Illegal string offset..." (Oxymore)(JandB)
r89345 | marcimat | (jeu. 14 mai 2015) | Report de r89344 : Fermer véritablement #3398 car la correction r89165 n'avait pas vu un piège et créait un beau warning :$t, censé être un tableau, était réaffecté au dessus pour recevoir l'identifiant du thread.On nomme pour ce cas correctement la variable.
r89347 | marcimat | (jeu. 14 mai 2015) | Report de r89346 : Ferme #3443 et suite de #3380 , qui complète r89155 (et 89157) : il faut que l'autorisation d'associer des documents, tout commele fait déjà la nouvelle autorisation de dissocier des documents, prenne en compte les identifiants négatifs.Ils correspondent à l'ajout d'un document sur un nouvel article encore en édition et non encore enregistré (pas d'id_article connu),ce qui affecte le document avec 0-$id_auteur qui l'a envoyé.
r89691 | marcimat | (mer. 27 mai 2015) | Correction d'un cas très particulier lors de l'installation de SPIP et du plugin organiseur, si un pluginappelle la fonction 'creer_base()' avant l'installation du plugin organiseur. (Cas qui peut arriversi quelqu'un ajoute au moins un plugin dans plugins-dist qui fait cela, avant d'avoir installé SPIP)Dans ce cas, la table 'spip_messages' est déjà créée, et Organiseur croit que l'on vient d'une mise à jourd'un vieux SPIP. Et à ce moment là, il ne crée pas les colonnes nécessaires (imessage et messagerie) dans SPIP auteurs,mais par contre il fait toutes les procédures de mises à jour.Du coup, on ajoute une procédure de mise à jour qui peut créer ces champs s'ils manquent.Corrige une erreur «Critère inconnu =» sur le squelettes prive/objets/liste/auteurs-enligne à l'installation.À noter que ce squelette dans SPIP fait appel à la colonne imessage depuis https://core.spip.net/projects/spip/repository/revisions/21401 , alors que ce champ estdéclaré dans ce plugin. Peut être faudrait il surcharger le squelette dans ce plugin pour permettre à SPIP de pouvoir fonctionner sans.
r89923 | real3t | (ven. 05 juin 2015)| Ce bouton actualiser la liste des plugins était tellement bas que j'étais passé à côté (merci Marcimat pour le signalement)
r89933 | real3t | (ven. 05 juin 2015)| Revert à la demande d'Eric : une boite d'info, c'est dans la navigation (bon, moi, je pense que c'est une boite de raccourcis, mais...)
r90060 | b_b | (mar. 09 juin 2015)| Report de r90059Fix https://core.spip.net/issues/3452 : rétablir la possibilité de joindre un document sur un forumSuite à r89155, il faut définir les autorisation autoriser_forum_associerdocuments_dist et autoriser_forum_dissocierdocuments_dist pour permettre de lier/délier un document à un message de forum. Les deux fonctions renvoient toujours true pour que cela fonctionne, voir remarques ici https://core.spip.net/issues/3452#note-4
r90353 | cedric | (ven. 19 juin 2015)| Report de r90352 : Detection des flooders : quand un utilisateur comptabilise plus de 200 visites d'articles dans une visite,on note son IP dans le dossier tmp/flood/Au bout de 24H (redefinissable via la constante _IP_FLOOD_TTL) on la supprime de tmp/flood/Ces IP reperees peuvent ensuite etre considerees comme des BOT ou meme kickee temporairement, au choix, action a ajouter dans le mes_options.php par exemple
r90358 | real3t | (ven. 19 juin 2015)| Report de [90354] et [90356] : Retour sur [89155] : il est autorise d'associer des documents a d'autres documents, certains plugins le font deja, evitons la casse pas trop justifiee (b_b, kent1, RealET)
SPIP-Core spip-3.0.17 -> spip-3.0.19 08 mai 2015
-------------------------------------------------------------
r21519 | ben | (mer. 13 août 2014) | Allez reparton(ton) en dev pour un tour
r21529 | ben | (jeu. 21 août 2014) | Pas d'onglet dans le nom de la fonction d'autorisation. Permet à un redacteur de pouvoir remodifier la langue et la couleur dans l'espace privé
r21531 | eric | (ven. 22 août 2014) | Eviter des "illegal offset" si l'utilisateur n'est pas connecté (déjà corrigé en 3.1).
r21536 | rasta | (ven. 05 sept. 2014) | Oups : mauvais "type" appelé pour la fonction d'autorisation pour celleux qui veulent la personnaliser : il ne faut pas garder le "configurer_" qui est déjà dans le "faire" !Cela ne change rien à la sécurité, c'est toujours l'autorisation "configurer" qui est appelée par défaut.
r21539 | cedric | (mar. 09 sept. 2014) | Fix #2013 : le filtrage /auteur du statut de previsu introduit par r21500 n'etait pas pris en compte dans autoriser_previsualiser_dist() ce qui ne rendait plus visible le lien de prévisu sur les articles en cours de redaction.
r21542 | b_b | (mar. 09 sept. 2014) | report de r21541 : maj url contrib (Francky)
r21543 | suske | (mer. 10 sept. 2014) | Suite à forum.spip.net/fr_258607.html, retour partiel sur http://core.spip.org/projects/spip/repository/revisions/21272. On retire <math> de _PROTEGE_BLOCS car cela casse le fonctionnement annoncé dans la doc (http://www.spip.net/fr_article3016.html: "on peut en réalité ajouter <math>...</math> de manière très large (en clair : on peut ajouter <math> tout au début du texte, et </math> tout à la fin...).). L'incompatibilité perdure en 3.1-dev => revoir la doc ou revoir la rupture de compat ou proposer une màj élégante dans les textes ?
r21544 | b_b | (mer. 10 sept. 2014) | pétouille (d'ailleurs je me demande pourquoi on ne colle toujours pas d'accents dans nos commentaires ?)
r21555 | cedric | (jeu. 18 sept. 2014) | accessibilité : ce onkeypress provoquait un submit lorsqu'on quittait le focus de la recherche, en navigation au clavier. Il n'est pas necessaire, on le vire (Armony)
r21556 | cedric | (ven. 19 sept. 2014) | la page infos_perso est une variante de la page auteur avec un id_auteur implicite. On la traite de maniere derogatoire pour que les plugins y ajoutent leurs blocs comme sur la page auteur (Philippe)
r21557 | cedric | (sam. 20 sept. 2014) | Accessibilité : quand un formulaire est dans une zone aria-live="true", le screen reader vocalise chaque frappe de caractere par une relecture complete du bloc, ce qui est absolument insupportable. On devrait pouvoir ameliorer cela avec un aria-relevant adapté sur la zone, mais à tester/affiner. En attendant on pose un aria-live="off" sur les balises <form> contenues dans les blocs ajax, ce qui rétablit un confort d'utilisation acceptable (Armony) On pose tous ces attributs aria en JS, pour ne pas risquer d'avoir l'un sans l'autre.
r21558 | cedric | (sam. 20 sept. 2014) | Accessibilité : expliciter la fonction du bouton qui fixe la reference des traductions (balise alt de <img> et title du <button> qui le contient) (Armony)
r21559 | cedric | (sam. 20 sept. 2014) | Accessibilité : il y a plusieurs liens "Changer" sur la page article, qui ne sont pas contextualisés quand lus par un lecteur d'écran. On ajoute en complément ce sur quoi chacun porte, en class="over" car ils ne sont pas visuellement nécessaires (Armony)
r21560 | cedric | (sam. 20 sept. 2014) | Accessibilite : ajouter un <h2> en tete de la zone wysiwyg pour permettre d'y acceder rapidement avec un lecteur d'ecran (Armony)Il faudra revoir la structure des hn mais c'est deja mieux comme ca.
r21568 | cedric | (lun. 22 sept. 2014) | eviter que la liste devienne impraticable si un article a une centaine d'auteurs (ou plus)
r21570 | cedric | (mer. 24 sept. 2014) | complement a r21568 : annuler un eventuel border et background sur le .inner (provient des box) (b_b)
r21575 | cedric | (ven. 03 oct. 2014) | Lorsque le cron a plus de 5min de retard, on double la requete http par une image background (ou un lancement force si c'est un bot) car c'est sans doute que l'hebergement n'autorise pas les http sortantDevrait ameliorer le fonctionnement des crons sur les sites a faible trafic ou hebergement limite
r21589 | marcimat | (jeu. 09 oct. 2014) | Report de r21588 : Lors de l'utilisation dans un squelette d'un filtre '|Classe::methode{...}' une erreur bloquante était générée par PHP. Ferme #3282 (merci witi).
r21595 | cedric | (sam. 11 oct. 2014) | Report de r21528 : #2884 : les modeles block interrompent les enumerations parce que le <div class="base64" ..> qui les echappe est suivi de \n\n interprete comme une fin de listeil suffit de ne pas inserer ces deux retour qui etaient initialement la pour aider le paragraphage mais ne s'averent plus necessaires pour le bon fonctionnement de tous les raccourcisLes tests de textwheel permettent de verifier qu'on ne casse rien
r21596 | cedric | (sam. 11 oct. 2014) | Fix #3276 : quand on a trop de sessions ouvertes (plus de 1000, personalisable par la constante _MAX_NB_SESSIONS_OUVERTES) on purge toutes les sessions anonymes de plus de 3h pour ne pas flooder le tmp/sessions.(Mecanisme de protection contre les bots qui postent sur le formulaire d'abonnement newsletter qui provoque la creation d'une session anonyme avec session_email)Cela permet de ne pas changer le comportement par defaut des sessions anonymes sauf en cas d'attaque/spam. Les gros sites pourront augmenter le seuil si besoin.
r21612 | kent1 | (lun. 13 oct. 2014) | Le khmer c'est le khmer
r21616 | cedric | (mer. 15 oct. 2014) | Fix #3099 : 2 fichiers _fonctions manquant pour le selecteur ajax en squelette (patch plus doux que la version 3.1)
r21646 | marcimat | (mer. 22 oct. 2014) | Report de r21645 : coquille et notice php en moins. Le sql_mode à la création d'une table mysql n'était pas ajouté.
r21647 | marcimat | (mer. 22 oct. 2014) | Le doit être défini ici.
r21664 | marcimat | (mer. 22 oct. 2014) | Report de r21663 : #3309 : mettre un fil d'ariane vide pour la page infos_perso
r21672 | b_b | (jeu. 23 oct. 2014) | report de r21633 : report ameliore de r21572 pour lire correctement les index a longueur fixee, et conserver la longueur qui est utile pour re-creer la table lors d'un dump par exemple cf #3260
r21687 | cedric | (ven. 24 oct. 2014) | Bugfix : certains raccourisseurs d'URL transorment les ?articleXX en ?articleXX= ce qui provoquait le bug suivant quand on demande spip.php?article6434 :- on regarde le cache : rien en cache- du coup on analyse l'URL : ça matche articleXXX donc on redirige vers l'article XXXquand on demande spip.php?article6434= (noter le "=" à la fin de l'URL)- on regarde le cache : rien en cache- du coup on analyse l'URL : ça matche PAS articleXXX à cause du "="- on calcule la page => pas d'id article en url ni autre => page sommaire- on met en cacheLe coup suivant, on demande spip.php?article6434- on regarde en cache : et là subtilité, le contexte du cache est le même que pour l'URL spip.php?article6434= :array('article6434' => '', 'lang'=>'fr')du coup on a bien une page en cache, on la ressort et on l'envoie. Manque de bol c'était le sommaire !
r21712 | b_b | (sam. 25 oct. 2014) | Report de r21706 : Bugfix de la regexp introduite par r21633 et r21572 utilisee par show_table ; elle ne savait pas lire une table simple sans aucun index (une seule parenthèse)
r21735 | cedric | (mar. 28 oct. 2014) | Report partiel de r21734 : bugfix sur le selecteur ajax de rubriques quand la page contient plusieurs input id_parent
r21747 | guytarr | (jeu. 30 oct. 2014) | Ferme #3289 : report de r21746, l'icone d'aide rtl n'était pas utilisée (George)
r21752 | cedric | (jeu. 30 oct. 2014) | Report de r21750 : Un bug serieux sur la sauvegarde : lors de l'insertion on ne comptait pas sur la table destination mais sur la table source, ce qui entrainait systematiquement une double insertion (une fois en multi puis une fois un par un)Pouvait provoquer une erreur avec abandon qui manquait de log et n'etait pas signale dans le status. On corrige donc les consequences d'une telle erreur.
r21754 | cedric | (jeu. 30 oct. 2014) | Report de r21753 : Fix #3327 : Respecter les CACA et les PROUT de Rastapopoulos dans la pagination (dont le modele peut être dynamique)(ie argumenter_inclure ignorait tous les arguments dynamiques qui suivaient un argument sans partie "x=", comme #INCLURE{#ENV{X,inclure/pied},id_article} qui est une inclusion directe d'un fichier, dont le contenu brut du fichier #ENV{X,inclure/pied} est importé, le reste du contexte ne servant pas+ un modificateur m manquant sur la regexp pour ne pas ingorer les valeurs multilignes)
r21756 | guytarr | (jeu. 30 oct. 2014) | Report de r21755 : ferme #3326, on repasse par email_valide dans le traiter pour enregistrer en base un email "valide" et éviter les "Marie Toto <Marie@toto.com>" ou "Marie@toto.com "
r21758 | cedric | (ven. 31 oct. 2014) | Report de r21751 : Une fonction base_prefixe_tables pour afficher le prefixe de la table sauvegardee dans l'interface
r21759 | cedric | (ven. 31 oct. 2014) | Quand table_spip=false, ne pas se rabattre sur la description declaree dans l'API SPIP, ni essayer de prefixer par spip_+ flag exist true/false dans le resultat pour distinguer quand on a pris la declaration fallback ou quand on a trouve la table
r21760 | cedric | (ven. 31 oct. 2014) | Fix #3270 (enfin) : trouver la description de la vraie table meme si le prefixe n'est pas spip_Faisait echouer les backup apres migration a cause du champ extra dans la vraie table mais pas dans la declaration sur laquelle on se basait
r21767 | cedric | (ven. 31 oct. 2014) | Report de r21764 : Fix #3325 : cast recursif sur le object -> array en sortie de YQL
r21768 | cedric | (sam. 01 nov. 2014) | r21759 modifie le comportement du flag exist et perturbe l'installation des extensions. On evite donc de risquer de la casse dans la version 3.0.x et on continue a ne peupler le flag exist que si il vaut true
r21794 | cedric | (mer. 12 nov. 2014) | bug js potentiel sur le formulaire de login : il attendre document.ready pour manipuler le DOM (Alexis)
r21798 | cedric | (jeu. 13 nov. 2014) | Report de r21797 : suite de r21795 : simplifier car l'imbrication (function($){$(function(){ console.log($);})})(jQuery) renvoit jQl et pas jQuery quand elle est lancee par jQl (a resoudre, Alexis)
r21803 | cedric | (sam. 15 nov. 2014) | Report de r21802 : Report de http://zone.spip.org/trac/spip-zone/changeset/85675/
r21807 | cedric | (sam. 15 nov. 2014) | Report de r21804 : le define _IS_BOT de fallback est fait apres l'inclusion de l'eventuel ecran de securite, qui est toujours plus a jour
r21808 | cedric | (sam. 15 nov. 2014) | Report de r21805 : 2 bots de plus detectes par le radar : Genieo et InfegyAtlas
r21809 | cedric | (sam. 15 nov. 2014) | Report de r21806 : Mise a jour de la detection des bots d'apres celle de l'ecran de securite
r21813 | rasta | (lun. 17 nov. 2014) | Fix #3339 : Correction des autorisations pour configurer ses infos persos : pour voir les deux formulaires configurer_langage et configurer_preferences c'est toujours ok. Pour voir les deux onglets des pages qui les contiennent, on calque les autorisations sur les deux précédentes.
r21814 | rasta | (lun. 17 nov. 2014) | ortho
r21820 | b_b | (ven. 21 nov. 2014) | report de r21818 : La globale "visiteur_session" doit être initialisée au tableau vide et non à la chaîne vide, sinon on se prend un avertissemnent "Illegal string offset" dans les squelettes l'utilisant sur un visiteur non authentifié.
r21833 | b_b | (mar. 25 nov. 2014) | fix #3353 : report de r21168 notice php en moins
r21837 | kent1 | (mer. 26 nov. 2014) | Indentation
r21838 | kent1 | (mer. 26 nov. 2014) | Indentation également
r21840 | kent1 | (mer. 26 nov. 2014) | Report de c21839Permettre de passer valider via pipeline si par exemple on est amené à rajouter des champs dans ce formulaire
r21844 | cedric | (lun. 01 déc. 2014) | - MSIE 6.0 est un botnet, on le traite comme un bot- securite sur une variable mal protegee du plugin contact (il faut upgrader le plugin pour retrouver toutes les fonctionnalites)
r21845 | cedric | (lun. 01 déc. 2014) | date
r21849 | b_b | (lun. 01 déc. 2014) | report de r21848 : n'abbusons pas du b ^^
r21851 | b_b | (lun. 01 déc. 2014) | report de r21850 : coquille de commentaire
r21852 | cedric | (mar. 02 déc. 2014) | L'ouverture/fermeture immédiate d'une socket pour lancer le cron en async peut bloquer un process apache sur le serveur, qui reste en attente betement. Il suffit alors d'avoir beaucoup de site sur un serveur pour arriver parfois à consommer le MaxClient Apache, ce qui est embêtant.On essaye donc autant que possible de lire la réponse du serveur pour fermer proprement et libererer la connexion, en se donnant un timeout de 200ms. De temps en temps il arrivera qu'on parte comme un sauvage sans le faire, mais tant que ça reste statistiquement occasionnel c'est pas grave.
r21857 | cedric | (dim. 07 déc. 2014) | Report de r21856 : oubli dans r21764 qui provoquait une erreur fatale
r21859 | cedric | (dim. 07 déc. 2014) | Report de r21858 : Oups, pas de var_dump (shame)
r21861 | kent1 | (mer. 10 déc. 2014) | Report de r21860Le Dari (http://fr.wikipedia.org/wiki/Dari) est aussi une langue rtl
r21880 | cedric | (lun. 15 déc. 2014) | id_table_objet() sur les tables non spip ne trouvait plus la clé primaire depuis r20312, un peu trop restrictif. On corrige en regardant la cle primaire du moment que la table est dans la base, qu'elle soit SPIP ou non
r21885 | b_b | (sam. 20 déc. 2014) | report de r21884 / Fix #3367 : réparer l'affectation de rubriques à un auteur cassée par r21734
r21887 | b_b | (sam. 20 déc. 2014) | report de r21886 / simplification (nicod)
r21894 | cedric | (mer. 21 janv. 2015) | Si une fonction wrap_embed_html est definie, on l'appelle en lui passant le contenu source et le html qu'on s'apprete a embed dans le contenu riche. Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l'indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP
r21899 | cedric | (sam. 07 févr. 2015) | perf issue : eviter une requete SQL a chaque affichage du formulaire de login anonyme
r21900 | ben | (mar. 10 févr. 2015) | Voir le lien ajouter une image dans le cas de deux icones sur la même ligne #3384
r21903 | fil | (sam. 14 févr. 2015) | nissart mistralien (report de [21902])
r21911 | kent1 | (lun. 16 févr. 2015) | typo et indentation
r21918 | cedric | (lun. 23 févr. 2015) | Bugfix : un unset sur une valeur de session ne doit pas generer un cache de session pour un visiteur anonyme sans session (effet papillon d'un petit bug sur session_set qui provoque une generation du cache à l'infini). Cas typique : - le plugin panier verifie a chaque hit si le visiteur a un panier en session et sinon par precaution appelle session_set('id_panier') pour unset une evenuelle valeur- session_set peuple la valeur a null et appelle ajouter_session()- ajouter_session voit que le visiteur n'a pas de cookie session et genere un hash de session- il inspecte le tableau de session voit qu'il n'y a rien a enregistrer et rend la main ni vu ni connu (croyait-il).Mais comme on a renseigne $_COOKIE[spip_session] celui-ci est pris en compte dans la fonction spip_session() et genere un cache sessionné. Le plus drole c'est qu'on ne pose le cookie. Donc on recommence au hit suivant avec un nouvel identifiant de session, ce qui est une catastrophe en performance si le site utilise des balises #SESSION. Chaque hit sur le site génére un nouveau cache (donc calcul, donc ecriture sur le disque, donc gonflement du cache etc.)Pour mémoire quand on joue avec les sessions dans les plugins et les squelettes il faut toujours verifier que au final un curl anonyme sur le site est servi sans aucun "Calcul" ni "Ecriture du cache" dans spip.log.
r21919 | cedric | (lun. 23 févr. 2015) | oups sur r21918, on ne sort que si $auteur_verif est vide
r21959 | cedric | (mer. 25 mars 2015) | ssl:// a vecu, il faut utiliser tls:// car sinon les requetes https ne passent plus sur les serveurs avec une lib OpenSSL recente
r21965 | eric | (dim. 29 mars 2015) | Eviter une notice dans le critère par si il est composé uniquement de deux éléments (ce qui est le cas le plus fréquent).
r21967 | eric | (dim. 29 mars 2015) | Insérer la date du log en y intégrant clairement l'année : c'est plus lisible.
r21975 | kent1 | (mer. 08 avril 2015) | win_width.htc n'existe pas (enfin si, mais dans squelettes-dist) et donc il renvoie des erreurs 404 ici et à priori, celui de squelettes-dist ne concerne que ie5.5 à priori, je pense donc qu'il n'est pas pertinent de le dupliquer pour ce navigateur seulement
r21984 | b_b | (ven. 10 avril 2015) | report de r21983 : spécifier l'unité des valeurs pour left et top appliqués au p inséré par ajaxcallback en fin de page (chankalan)
r21985 | cedric | (sam. 11 avril 2015) | Une constante pour le timeout de connexion a la socket (par defaut a 10s au lieu de 30s)+ une globale pour interdire le fallback par fopen quand on ne veut pas risquer un double timeout si on sait que le host peut nous bloquer avec son firewall
r22001 | erationa | (mer. 22 avril 2015) | dans certains cas particuliers, les filtres ne sont pas chargés par le selecteur. on les charge donc.corrige https://core.spip.net/issues/3381(en SPIP 3.1, le chargement est global sur le selecteur et permet d'éviter le problème)
r22006 | b_b | (sam. 25 avril 2015) | report tardif de r19980 : corriger le title du lien vers la config du site dans le bandeau (klaus)
r22007 | ben | (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
r22008 | ben | (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
r22009 | ben | (dim. 26 avril 2015) | SPIP 3.0.18
r22010 | ben | (dim. 26 avril 2015) | SPIP 3.0.18
r22012 | ben | (dim. 26 avril 2015) | Changelog ok SPIP 3.0.18( francky / maieul)
r22016 | b_b | (dim. 26 avril 2015) | revert de r22007 (plus de reports de langues de 3.1 vers 3.0)
r22017 | b_b | (dim. 26 avril 2015) | retour sur r22016 : cette modif n'avais rien à faire dans le revert
r22019 | ben | (dim. 26 avril 2015) | oc_ni
r22036 | gilles | (mer. 29 avril 2015) | corriger le bug des espaces dans les mots de passe : https://core.spip.net/issues/3409
r22049 | eric | (dim. 03 mai 2015) | Reporter une vieille modif de la 3.1 (20373) concernant la surcharge par local_xx en 3.0.
r22069 | kent1 | (jeu. 07 mai 2015) | L'arménien s'écrit Հայերեն dans sa langue
r22079 | cedric | (ven. 08 mai 2015) | Revert de r22019 : les nouveaux fichiers de langue sont pour SPIP 3.1
SPIP-plugins-dist spip-3.0.17 -> spip-3.0.19 08 mai 2015
-------------------------------------------------------------
r84541 | frank | (mar. 09 sept. 2014) | Ce n'est plus spip-contrib.mais contrib.spip
r84552 | cedric | (mer. 10 sept. 2014) | presenter les groupes dans l'ordre de la numerotation, puis par multi titre si pas de numerotation
r84853 | cedric | (mer. 24 sept. 2014) | image_recadre peut recadrer une image pour respecter une proportion. Le premier argument est le ratio largeur:hauteur demandé, le second argument est alors un '+' pour agrandir avec des bandes ou un '-' pour reduire l'image.Exemple[(#LOGO_ARTICLE|image_recadre{16:9,'-'})]Permet d'avoir un logo au format 16:9 en recadrant l'image le moins possible.Cela permet de conserver l'image la plus grande possible qui respecte une proportion.
r84938 | cedric | (mer. 01 oct. 2014) | Fix http://core.spip.org/issues/3278 : utiliser :hover et pas .hover comme selecteur CSS
r84939 | cedric | (mer. 01 oct. 2014) | n'initialiser le padding de la box qu'au premier lancement et pas au chargement de la page car sinon certains navigateurs chargeent les images de background au chargement de la page, meme si la box ne sert jamais
r84940 | cedric | (mer. 01 oct. 2014) | initialisation des dimensions de la box ne se faisait pas dans le cas modalbox, on deplace cette initialisation
r84942 | cedric | (mer. 01 oct. 2014) | r83376 avait ressucité du code mort, mais manque de chance c'etait un bug en puissance et pas une feature : le resultat de la fonction depend d'un define qui n'est pas un argument de la fonction, on ne peut donc pas memoizer en fonction de ses arguments. Cela empechait la mise a jour des URLs, on retire donc cette appel (go0uz)
r84944 | b_b | (mer. 01 oct. 2014) | report de r84899 / version 1.4.25: passer la taille max des urls propres et arbos à 80 caractères
r84996 | cedric | (sam. 04 oct. 2014) | Ferme http://core.spip.org/issues/3272 : utiliser |ancre_url pour poser une ancre
r85114 | cedric | (sam. 11 oct. 2014) | Fix http://core.spip.org/issues/3263 : les vignettes se calculent par leur URL, pas par le nom en clair du site (il est identique pour les sites courants mais pas pour les moteurs de recherche connus)
r85122 | marcimat | (sam. 11 oct. 2014) | Report de r85121 : Chaîne de langue manquante
r85219 | b_b | (mar. 14 oct. 2014) | version 0.8.9 : r83397 était insuffisant, il faut aussi définir cette propriété pour cboxLoadedContent (on pourrait l'appliquer directement à tous les éléments contenus dans la box mais ça peut poser problème)
r85743 | cedric | (ven. 31 oct. 2014) | Report de r85728 : Quand on backup un SPIP qui utilise un prefixe de tables différent de 'spip', l'afficher pour rassurer le webmestre qui sait qu' il y a un prefixe et qui s'inquiète de ce que SPIP sauvegarde bien les bonnes tables.
r85745 | cedric | (ven. 31 oct. 2014) | Report de r85731 : Afficher les erreurs rencontrees lors de la sauvegarde au lieu d'un message de reussite en cas d'echec
r85750 | cedric | (ven. 31 oct. 2014) | eviter une erreur fatale eventuelle (si plugin migration present dans une vieille version)
r85789 | cedric | (sam. 01 nov. 2014) | Tester l'existence du flag exist ET sa valeur
r85817 | b_b | (mar. 04 nov. 2014) | version 0.8.10 : oubli dans r83397 et r85219, fix du box sizing aussi pour les boxes en rtl
r85967 | maieul | (mar. 11 nov. 2014) | pas de raison que les forums privés ne réagissent pas au réglage de taille minimale
r85968 | b_b | (mar. 11 nov. 2014) | revert de r85967 par svn merge -c -85967 .
r85969 | maieul | (mar. 11 nov. 2014) | nous disons donc : pas de raison que les ofrums de l'espace privé échappe aux règles sur la longueur minimal. Merci à b_b pour le revert du commit trop fort
r85973 | gilles | (mar. 11 nov. 2014) | report de [85972]
r86007 | cedric | (mer. 12 nov. 2014) | Report de r86006 : ne pas generer une session anonyme a chaque POST de forum mais uniquement si un fichier a ete poste et si c'est une option autorisee+ generer toute de suite une erreur si un POST a ete fait alors que l'option n'est pas autorisee (car des BOTs qui spamment)(evite de generer des sessions anonymes en nombre pour rien)
r86014 | cedric | (mer. 12 nov. 2014) | Report de r86013 : la bonne inclusion sur memoization (depuis http://zone.spip.org/trac/spip-zone/changeset/71370/_plugins_/memoization)
r86132 | marcimat | (lun. 17 nov. 2014) | Report de r86131 : Résoudre une partie de #3345 : une url http://domain.tld/?2 acceptait par erreur (avec MYSQL) une url propre pouvant être "2-truc"
r86211 | cedric | (ven. 21 nov. 2014) | report de r85649
r86358 | tetue | (sam. 29 nov. 2014) | coquille
r86393 | kent1 | (lun. 01 déc. 2014) | Ne pas surcharger non plus ce formulaire
r86394 | kent1 | (lun. 01 déc. 2014) | oups
r86418 | cedric | (mar. 02 déc. 2014) | Report de r86336 : Le header X-Spip-Visites ne fonctionnait plus depuis SPIP 3.0 suite a une salade de variables dans le pipeline affichage_entetes_final. On corrige.
r86419 | cedric | (mar. 02 déc. 2014) | oups, mauvais numero de version dans r86418
r86545 | cedric | (mar. 09 déc. 2014) | Bugfix temporisation 10s sur les revisions enfin trouve : la comparaison 0.0+titre_version < $date etait parfois vrai avec poutant titre_version qui contient $date, on rajoute donc une condition de non egalite au format texte pour exclure ce cas
r86681 | cedric | (jeu. 11 déc. 2014) | eviter une erreur si extension n'est pas renseigne (cas tordus)
r86686 | cedric | (ven. 12 déc. 2014) | Quand on minifie une CSS squelette, il faut prendre l'url de cette css, et pas l'url de la page courante comme base pour les urls absolues
r86688 | cedric | (ven. 12 déc. 2014) | Retour sur r86686 : il faut fournir une url de 1er niveau publique si on est dans le public, et ecrire/ si on est dans ecrire/ puisque le fond css est calculé dans ce cas depuis ecrire/ et donc avec des urls relatives a ecrire/
r86810 | xdjuj | (lun. 22 déc. 2014) | #3368 [Bug] [XML] [Validation] les urls de la forme http://domaine.com/spip.php?page=article&id_article=24 posent un problème de validation, les liens doivent être de la forme http://domaine.com/spip.php?page=article&amp;id_article=24 — problème également présent sur SPIP 2.x
r86970 | cedric | (lun. 05 janv. 2015) | bugfix avec legendes longues sur la mediabox black-simple
r87125 | cedric | (sam. 17 janv. 2015) | Un cache CSS qui ne dependait pas du host en cours, et donc qui entrainait parfois des injection croisees de domaine dans les css pour les sites etant visites sur plusieurs domaines
r87162 | cedric | (mer. 21 janv. 2015) | Si une fonction wrap_embed_html est definie, on l'appelle en lui passant le contenu source et le html qu'on s'apprete a embed dans le contenu riche. Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l'indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP
r87248 | cedric | (ven. 30 janv. 2015) | bugfix formulaire edition sur les modeles emb qui ont du js ou php
r87340 | cedric | (mar. 03 févr. 2015) | Gerer une erreur eventuelle sur le formulaire mot de passe au lieu de faire croire que tout s'est bien passe
r87399 | cedric | (mar. 10 févr. 2015) | Quand on vient de saisir 2 fois son nouveau mot de passe, on peut faire le cadeau de connexter directement l'utilisateur plutot que lui demander de le saisir une 3eme fois dans le formulaire de login (puisque de toute facon on lui rappelle son login, il a bien tout ce qu'il faut pour se connecter)
r87400 | cedric | (mar. 10 févr. 2015) | Quand on vient de saisir 2 fois son nouveau mot de passe, on peut faire le cadeau de connexter directement l'utilisateur plutot que lui demander de le saisir une 3eme fois dans le formulaire de login (puisque de toute facon on lui rappelle son login, il a bien tout ce qu'il faut pour se connecter)
r87489 | cedric | (mar. 17 févr. 2015) | Bugfix : sur les secteurs on affiche une icone pour voir tous les forums proposes sur les articles du secteur mais la page controler_forum n'affichait pas les resultats correspondants- on declare la jointure sur spip_articles pour le critere id_secteur- on filtre les messages sur id_secteur quand il est dans l'URL- on modifie l'url du lien pour passer les bons arguments et arriver sur les messages proposes dont le decompte correspond a ce qui est annonce sur l'icone
r87514 | real3t | (mer. 18 févr. 2015) | Ajout du moteur de recherche Wow.com
r87634 | cedric | (mer. 25 févr. 2015) | Les raccourcis glossaires sont deja personalisables avec une fonction glossaire_xxxx quand on mets une ancre #xxxx sur le raccourci glossaire.On etend un peu pour que si une ancre inconnue est passee on se rabatte sur la fonction glossaire_ si elle existe (c'est deja elle qui etait appelee si elle existait, en l'absence d'ancre)Du coup on passe l'ancre en 3eme argument pour que la fonction standard puisse l'utiliser pour savoir quoi faire.Exemple d'usage :<pre>define('_RACCOURCI_GLOSSAIRE', "/\[(@[^][<>]+)\]/S");function glossaire_($terme,$id,$ancre=null){ if ($ancre AND $ancre!="twitter") return $terme; return glossaire_twitter($terme,$id,$ancre);}function glossaire_twitter($terme,$id,$ancre=null){ $terme = rawurlencode(ltrim($terme,"@")); return "https://twitter.com/$terme";}function glossaire_seenthis($terme,$id,$ancre=null){ $terme = rawurlencode(ltrim($terme,"@")); return "http://seenthis.net/people/$terme";}</pre>Et dans le texte on utilise[@spip] pour avoir un lien vers https://twitter.com/spip et [@spip#seenthis] pour avoir un lien vers http://senthis.net/people/spipdeclinable/personalisable a l'envie. Et si je mets [@spip#gplus] qui n'est pas defini je tombe sur @spip relative a mon site
r87721 | pierrekuhn| (mar. 03 mars 2015) | Ajout du moteur de recherche Assentice.com
r87758 | marcimat | (ven. 06 mars 2015) | Report de r87757 : Déclarer le pipeline 'renseigner_document' ajouté par r74520.
r87854 | cedric | (mer. 11 mars 2015) | Retablir l'affichage du message d'erreur quand le lien de changeemnt de mot de passe est invalide
r88103 | erational | (ven. 20 mars 2015) | report de z88102. autoriser la lecture de css pour l'évalution du site en "mobile friendly"ttps://www.google.com/webmasters/tools/mobile-friendly/
r88571 | maieul | (sam. 11 avril 2015) | nous disions : #DESCRIPTION passe déjà par propre, pas la peine de le faire 2 fois (pas de report en 3.1 parce que celle-ci utilise #DESCRIPTION*)
r88815 | ben | (dim. 26 avril 2015) | Report de lang avant 3.0.18 ~/svn/spip-zone/_outils_/CReportLangTrunk30.ksh
r88831 | b_b | (dim. 26 avril 2015) | revert de r88815 : plus de reports de langues de la 3.1 vers la 3.0
r88861 | arno | (mar. 28 avril 2015) | Vignettes des portfolios en 150x150 (au lieu de 60x60).
r88869 | arno | (mar. 28 avril 2015) | Corriger placement des vignettes (ajouter une classe .vignette).
r88961 | franck | (sam. 02 mai 2015) | Evitons une redirection, ce n'est plus http://doc.spip.org mais http://code.spip.net
r88974 | eric | (sam. 02 mai 2015) | Report de 88958 et 88962.Par défaut, la recherche des plugins se fait sur tous les états et non plus les états stables.Une classe nonstable est ajoutée sur les plugins trouvés dont l'état n'est pas stable.Cela permet de styler ces plugins pour l'instant juste avec une opacity moindre mais on pourra améliorer.
r89102 | eric | (mer. 06 mai 2015) | On backporte la fonction de calcul de l'url de démo introduite en 3.1 afin de permettre que les plugins utilise cette nouvelle feature en 3.0 aussi sans poser de souci sur Plugins SPIP.Pour l'instant étant donné que l'on ne dispose pas d'item de langue demo en 3.0 dans SVP ou dans SPIP on n'affiche pas le lien (à voir avant de releaser)
r89145 | gilles | (ven. 08 mai 2015) | Toute petite modification de la couleur recuperee par couleur_extraire => mise a jour du tests
r89155 | cedric | (ven. 08 mai 2015) | Fix https://core.spip.net/issues/3380 : il faut verifier les droits d'associer/dissocier les documents a un objet dans le formulaire editer objet.Pour cela on cree 2 autorisations associerdocuments et dissocierdocuments qui par defaut reposent sur autoriser(modifier).+ n'afficher le lien 'modifier' sur un document que si on a bien le droit de le modifier
r89156 | cedric | (ven. 08 mai 2015) | increment version
SPIP-Core spip-3.0.16 -> spip-3.0.17 13 août 2014 SPIP-Core spip-3.0.16 -> spip-3.0.17 13 août 2014
------------------------------------------------------------- -------------------------------------------------------------

View file

@ -5,7 +5,7 @@
* ------------------ * ------------------
*/ */
define('_ECRAN_SECURITE', '1.1.9'); // 2014-03-13 define('_ECRAN_SECURITE', '1.2.2'); // 2014-12-01
/* /*
* Documentation : http://www.spip.net/fr_article4200.html * Documentation : http://www.spip.net/fr_article4200.html
@ -26,8 +26,10 @@ if (!defined('_IS_BOT'))
AND preg_match( AND preg_match(
// mots generiques // mots generiques
',bot|slurp|crawler|spider|webvac|yandex|' ',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 // 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']) . ',i',(string) $_SERVER['HTTP_USER_AGENT'])
); );
@ -36,15 +38,19 @@ if (!defined('_IS_BOT'))
* soit pas numérique (ce qui bloque l'exploitation de divers trous * soit pas numérique (ce qui bloque l'exploitation de divers trous
* de sécurité, dont celui de toutes les versions < 1.8.2f) * de sécurité, dont celui de toutes les versions < 1.8.2f)
* (sauf pour id_table, qui n'est pas numérique jusqu'à [5743]) * (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) 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]); $_GET[$var] = is_array($_GET[$var])?@array_map('intval',$_GET[$var]):intval($_GET[$var]);
foreach ($_POST as $var => $val) 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]); $_POST[$var] = is_array($_POST[$var])?@array_map('intval',$_POST[$var]):intval($_POST[$var]);
foreach ($GLOBALS as $var => $val) 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]); $GLOBALS[$var] = is_array($GLOBALS[$var])?@array_map('intval',$GLOBALS[$var]):intval($GLOBALS[$var]);
/* /*
@ -224,6 +230,15 @@ if (count($_FILES)){
unset($_FILES[$k]); 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 * reinstall=oui un peu trop permissif

View file

@ -22,7 +22,7 @@ function action_desinstaller_plugin_dist() {
if (defined('_DIR_PLUGINS_SUPPL') AND $dir_plugins==_DIR_PLUGINS_SUPPL) if (defined('_DIR_PLUGINS_SUPPL') AND $dir_plugins==_DIR_PLUGINS_SUPPL)
$dir_type = "_DIR_PLUGINS_SUPPL"; $dir_type = "_DIR_PLUGINS_SUPPL";
$installer_plugins = charger_fonction('installer', 'plugins'); $installer_plugins = charger_fonction('installer', 'plugins');
$infos = $installer_plugins($plugin, 'uninstall'); $infos = $installer_plugins($plugin, 'uninstall',$dir_type);
if ($infos AND !$infos['install_test'][0]) { if ($infos AND !$infos['install_test'][0]) {
include_spip('inc/plugin'); include_spip('inc/plugin');
ecrire_plugin_actifs(array($plugin),false,'enleve'); ecrire_plugin_actifs(array($plugin),false,'enleve');

View file

@ -13,7 +13,7 @@
if (!defined('_ECRIRE_INC_VERSION')) return; 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=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_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 * si id_objet=id_trad actuel et id_trad=new_id_trad : modifie la reference de tout le groupe de traduction
@ -60,7 +60,7 @@ function action_referencer_traduction_dist($objet, $id_objet, $id_trad) {
// on a fourni un id_trad nul : sortir id_objet du groupe de trad // on a fourni un id_trad nul : sortir id_objet du groupe de trad
else { else {
$old_id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$id_table_objet=".intval($id_objet)); $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)); 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. // Verifier si l'ancien groupe ne comporte plus qu'un seul objet. Alors mettre a zero.

View file

@ -92,7 +92,14 @@ function auth_spip_formulaire_login($flux){
// faut il encore envoyer md5 ? // faut il encore envoyer md5 ?
// on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle // 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 // 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 // javascript qui gere la securite du login en evitant de faire circuler le pass en clair
$flux['data'].= $flux['data'].=
@ -106,13 +113,13 @@ function auth_spip_formulaire_login($flux){
."var informe_auteur_en_cours = false;" ."var informe_auteur_en_cours = false;"
."var attente_informe = 0;" ."var attente_informe = 0;"
."var compat_md5 = ".($compat_md5?"true;":"false;") ."var compat_md5 = ".($compat_md5?"true;":"false;")
."(function($){ ."jQuery(function(){
$('#password') 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>\"); .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(); affiche_login_secure();
$('#var_login').change(actualise_auteur); jQuery('#var_login').change(actualise_auteur);
$('form#formulaire_login').submit(login_submit); jQuery('form#formulaire_login').submit(login_submit);
}(jQuery));" });"
."/*]]>*/</script>"; ."/*]]>*/</script>";
return $flux; return $flux;

View file

@ -11,7 +11,7 @@
\***************************************************************************/ \***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) return; if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('base/objets'); require_once _ROOT_RESTREINT . 'base/objets.php';
// //
// Utilitaires indispensables autour des serveurs SQL // Utilitaires indispensables autour des serveurs SQL

View file

@ -55,13 +55,33 @@ function base_determine_autoinc($table,$desc=array()){
* @return void * @return void
*/ */
function creer_ou_upgrader_table($table,$desc,$autoinc,$upgrade=false,$serveur='') { function creer_ou_upgrader_table($table,$desc,$autoinc,$upgrade=false,$serveur='') {
#spip_log("creer_ou_upgrader_table table=$table autoinc=$autoinc upgrade=$upgrade","dbinstall"._LOG_INFO_IMPORTANTE);
$sql_desc = $upgrade ? sql_showtable($table,true,$serveur) : false; $sql_desc = $upgrade ? sql_showtable($table,true,$serveur) : false;
#if (!$sql_desc) $sql_desc = false;
#spip_log("table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
if (!$sql_desc) { if (!$sql_desc) {
if ($autoinc==='auto') if ($autoinc==='auto')
$autoinc = base_determine_autoinc($table,$desc); $autoinc = base_determine_autoinc($table,$desc);
#spip_log("sql_create $table autoinc=$autoinc","dbinstall"._LOG_INFO_IMPORTANTE);
sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur); sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
// verifier la bonne installation de la table (php-fpm es-tu la ?)
$sql_desc = sql_showtable($table,true,$serveur);
#if (!$sql_desc) $sql_desc = false;
#spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
if (!$sql_desc){
// on retente avec un sleep ?
sleep(1);
sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
$sql_desc = sql_showtable($table,true,$serveur);
#if (!$sql_desc) $sql_desc = false;
#spip_log("Resultat table=$table sql_desc:$sql_desc","dbinstall"._LOG_INFO_IMPORTANTE);
if (!$sql_desc){
spip_log("Echec creation table $table","maj"._LOG_CRITIQUE);
}
}
} }
else { else {
#spip_log("sql_alter $table ... (on s'en fiche)","dbinstall"._LOG_INFO_IMPORTANTE);
// ajouter les champs manquants // ajouter les champs manquants
// on ne supprime jamais les champs, car c'est dangereux // on ne supprime jamais les champs, car c'est dangereux
// c'est toujours a faire manuellement // c'est toujours a faire manuellement

View file

@ -78,6 +78,18 @@ function base_lister_toutes_tables($serveur='', $tables=array(), $exclude = arra
return $res; 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) * Fabrique la liste a cocher des tables a traiter (copie, delete, sauvegarde)
@ -510,9 +522,13 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
$trouver_table = charger_fonction('trouver_table','base'); $trouver_table = charger_fonction('trouver_table','base');
foreach ($tables as $table){ foreach ($tables as $table){
// en principe, pas de spip_ dans le nom de table passe a trouver_table // si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
$desc_source = $trouver_table(preg_replace(",^spip_,","",$table), $serveur_source, false); // sinon chercher la vraie table
if (!$desc_source) $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); $desc_source = $trouver_table($table, $serveur_source, false);
// verifier que la table est presente dans la base source // verifier que la table est presente dans la base source
@ -550,6 +566,9 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
// mais si ca renvoie false c'est une erreur fatale => abandon // mais si ca renvoie false c'est une erreur fatale => abandon
if ($inserer_copie($table,$rows,$desc_dest,$serveur_dest)===false) { if ($inserer_copie($table,$rows,$desc_dest,$serveur_dest)===false) {
// forcer la sortie, charge a l'appelant de gerer l'echec // 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 // copie finie
return true; return true;
} }
@ -621,15 +640,23 @@ function base_copier_tables($status_file, $tables, $serveur_source, $serveur_des
function base_inserer_copie($table,$rows,$desc_dest,$serveur_dest){ function base_inserer_copie($table,$rows,$desc_dest,$serveur_dest){
// verifier le nombre d'insertion // 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 // si l'enregistrement est deja en base, ca fera un echec ou un doublon
$r = sql_insertq_multi($table,$rows,$desc_dest,$serveur_dest); $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)){ 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){ foreach($rows as $row){
// si l'enregistrement est deja en base, ca fera un echec ou un doublon // si l'enregistrement est deja en base, ca fera un echec ou un doublon
$r = sql_insertq($table,$row,$desc_dest,$serveur_dest); $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 $r;
} }

View file

@ -828,6 +828,20 @@ function lister_tables_spip($serveur=''){
} }
return $tables[$serveur]; return $tables[$serveur];
} }
function lister_toutes_tables($serveur){
static $tables = array();
if (!isset($tables[$serveur])){
$tables[$serveur] = array();
if (!function_exists("sql_alltable"))
include_spip("base/abstract_sql");
$ts = sql_alltable('%',$serveur); // toutes les tables
foreach ($ts as $t){
$tables[$serveur][$t] = $t;
}
}
return $tables[$serveur];
}
/** /**
* Retrouve le nom d'objet à partir de la table * Retrouve le nom d'objet à partir de la table
@ -939,7 +953,8 @@ function id_table_objet($type,$serveur='') {
$trouver_table = charger_fonction('trouver_table', 'base'); $trouver_table = charger_fonction('trouver_table', 'base');
$ts=lister_tables_spip($serveur); $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); $desc = $trouver_table($t,$serveur);
if (isset($desc['key']['PRIMARY KEY'])) if (isset($desc['key']['PRIMARY KEY']))
return $desc['key']['PRIMARY KEY']; return $desc['key']['PRIMARY KEY'];

View file

@ -103,7 +103,7 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
// base sous SPIP: gerer les abreviations explicites des noms de table // base sous SPIP: gerer les abreviations explicites des noms de table
if ($connexion['spip_connect_version']) { 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 = $table_des_tables[$nom];
$nom_sql = 'spip_' . $nom; $nom_sql = 'spip_' . $nom;
} }
@ -120,7 +120,7 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
AND $desc_cache=unserialize($desc_cache)) AND $desc_cache=unserialize($desc_cache))
$connexion['tables'] = $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])) if (isset($tables_principales[$nom_sql]))
$fdesc = $tables_principales[$nom_sql]; $fdesc = $tables_principales[$nom_sql];
@ -131,13 +131,11 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
$nom_sql = 'spip_' . $nom; $nom_sql = 'spip_' . $nom;
$fdesc = &$tables_principales[$nom_sql]; $fdesc = &$tables_principales[$nom_sql];
} }
else { elseif (isset($tables_auxiliaires[$n=$nom])
if (isset($tables_auxiliaires[$n=$nom]) OR isset($tables_auxiliaires[$n='spip_'.$nom])) {
OR isset($tables_auxiliaires[$n='spip_'.$nom])) { $nom_sql = $n;
$nom_sql = $n; $fdesc = &$tables_auxiliaires[$n];
$fdesc = &$tables_auxiliaires[$n]; } # table locale a cote de SPIP, comme non SPIP:
} # table locale a cote de SPIP, comme non SPIP:
}
} }
if (!isset($connexion['tables'][$nom_sql])) { if (!isset($connexion['tables'][$nom_sql])) {
@ -152,8 +150,9 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
// on retombe sur la description donnee dans les fichiers spip // on retombe sur la description donnee dans les fichiers spip
$desc = $fdesc; $desc = $fdesc;
} }
else else {
$desc['exist'] = true; $desc['exist'] = true;
}
$desc['table'] = $desc['table_sql'] = $nom_sql; $desc['table'] = $desc['table_sql'] = $nom_sql;
$desc['connexion']= $serveur; $desc['connexion']= $serveur;

View file

@ -281,7 +281,12 @@ function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) {
$champ = $c['champ']; $champ = $c['champ'];
if (!isset($opt[$champ])) return false; // pas de champ passe a la demande => NIET if (!isset($opt[$champ])) return false; // pas de champ passe a la demande => NIET
$previsu = explode(',',$c['previsu']); $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; return false;
} }
} }
@ -1042,14 +1047,30 @@ function autoriser_base_reparer_dist($faire, $type, $id, $qui, $opt) {
* @param array $opt Options de cette autorisation * @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon * @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 le formulaire configurer_langage
*
* Toujours OK
*
* @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_langage_configurer_dist($faire,$type,$id,$qui,$opt) {
return true; return true;
} }
/** /**
* Autorisation de voir l'onglet configurerlangage * Autorisation de voir l'onglet configurerlangage
* *
* Toujours OK * Calquée sur l'autorisation de voir le formulaire configurer_langage
* *
* @param string $faire Action demandée * @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action * @param string $type Type d'objet sur lequel appliquer l'action
@ -1058,12 +1079,12 @@ function autoriser_infosperso_onglet_dist($faire,$type,$id,$qui,$opt) {
* @param array $opt Options de cette autorisation * @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon * @return bool true s'il a le droit, false sinon
**/ **/
function autoriser_configurerlangage_onglet_dist($faire,$type,$id,$qui,$opt) { function autoriser_configurerlangage_dist($faire,$type,$id,$qui,$opt) {
return true; return autoriser('configurer', '_langage', $id, $qui, $opt);
} }
/** /**
* Autorisation de voir l'onglet configurerpreferences * Autorisation de voir le formulaire configurer_preferences
* *
* Toujours OK * Toujours OK
* *
@ -1074,10 +1095,26 @@ function autoriser_configurerlangage_onglet_dist($faire,$type,$id,$qui,$opt) {
* @param array $opt Options de cette autorisation * @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon * @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; 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 * Autorisation de voir le menu auteurs
* *

View file

@ -75,7 +75,9 @@ function cvtautosave_formulaire_traiter($flux){
if ($cle_autosave = _request('autosave')){ if ($cle_autosave = _request('autosave')){
include_spip('inc/session'); include_spip('inc/session');
session_set('session_autosave_'.$cle_autosave, null); session_set('session_autosave_'.$cle_autosave, null);
}
if (isset($GLOBALS['visiteur_session']) AND $GLOBALS['visiteur_session']){
// delai par defaut avant purge d'un backup de form : 72H // delai par defaut avant purge d'un backup de form : 72H
if (!defined('_AUTOSAVE_GB_DELAY')) define('_AUTOSAVE_GB_DELAY',72*3600); if (!defined('_AUTOSAVE_GB_DELAY')) define('_AUTOSAVE_GB_DELAY',72*3600);
$time_too_old = time() - _AUTOSAVE_GB_DELAY; $time_too_old = time() - _AUTOSAVE_GB_DELAY;
@ -92,6 +94,7 @@ function cvtautosave_formulaire_traiter($flux){
} }
} }
} }
return $flux; return $flux;
} }

View file

@ -27,7 +27,7 @@ function cvtconf_formulaire_charger($flux){
) { ) {
// Pour tous les formulaires CONFIGURER, ayant une fonction charger ou pas, on teste si autorisé // Pour tous les formulaires CONFIGURER, ayant une fonction charger ou pas, on teste si autorisé
include_spip('inc/autoriser'); include_spip('inc/autoriser');
if (!autoriser('configurer', "_$form")) { if (!autoriser('configurer', '_'.substr($form,11))) {
return false; return false;
} }

View file

@ -21,6 +21,7 @@ if (!defined('_INC_DISTANT_VERSION_HTTP')) define('_INC_DISTANT_VERSION_HTTP', "
if (!defined('_INC_DISTANT_CONTENT_ENCODING')) define('_INC_DISTANT_CONTENT_ENCODING', "gzip"); if (!defined('_INC_DISTANT_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_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_MAX_SIZE')) define('_INC_DISTANT_MAX_SIZE',2097152);
if (!defined('_INC_DISTANT_CONNECT_TIMEOUT')) define('_INC_DISTANT_CONNECT_TIMEOUT',10);
define('_REGEXP_COPIE_LOCALE', ',' . define('_REGEXP_COPIE_LOCALE', ',' .
preg_replace('@^https?:@', 'https?:', $GLOBALS['meta']['adresse_site']) preg_replace('@^https?:@', 'https?:', $GLOBALS['meta']['adresse_site'])
@ -661,8 +662,8 @@ function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = ""
$scheme = 'http'; $scheme = 'http';
$noproxy = ''; $noproxy = '';
} elseif ($t['scheme']=='https') { } elseif ($t['scheme']=='https') {
$scheme = 'ssl'; $scheme = 'tls';
$noproxy = 'ssl://'; $noproxy = 'tls://';
if (!isset($t['port']) || !($port = $t['port'])) $t['port'] = 443; if (!isset($t['port']) || !($port = $t['port'])) $t['port'] = 443;
} }
else { else {
@ -680,7 +681,8 @@ function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = ""
if (!$f){ if (!$f){
// fallback : fopen // fallback : fopen
if (!need_proxy($host) 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"); $f = @fopen($url, "rb");
spip_log("connexion vers $url par simple fopen"); spip_log("connexion vers $url par simple fopen");
$fopen = true; $fopen = true;
@ -702,14 +704,14 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
$connect = ""; $connect = "";
if ($http_proxy){ 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" : ""); $path_host = (!$user ? '' : "$user@") . $host . (($port!=80) ? ":$port" : "");
$connect = "CONNECT " .$path_host." $vers\r\n" $connect = "CONNECT " .$path_host." $vers\r\n"
."Host: $path_host\r\n" ."Host: $path_host\r\n"
."Proxy-Connection: Keep-Alive\r\n"; ."Proxy-Connection: Keep-Alive\r\n";
} }
else { else {
$path = (($scheme=='ssl') ? 'https://' : "$scheme://") $path = (($scheme=='tls') ? 'https://' : "$scheme://")
. (!$user ? '' : "$user@") . (!$user ? '' : "$user@")
. "$host" . (($port!=80) ? ":$port" : "") . $path; . "$host" . (($port!=80) ? ":$port" : "") . $path;
} }
@ -724,10 +726,10 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
if ($connect){ if ($connect){
$streamContext = stream_context_create(array('ssl' => array('verify_peer' => false, 'allow_self_signed' => true))); $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"); spip_log("Recuperer $path sur $first_host:$port par $f (via CONNECT)","connect");
if (!$f) return false; if (!$f) return false;
stream_set_timeout($f, 10); stream_set_timeout($f, _INC_DISTANT_CONNECT_TIMEOUT);
fputs($f, $connect); fputs($f, $connect);
fputs($f, "\r\n"); fputs($f, "\r\n");
@ -746,9 +748,13 @@ function lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $
spip_log("OK CONNECT sur $first_host:$port","connect"); spip_log("OK CONNECT sur $first_host:$port","connect");
} }
else { 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"); 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"]; $site = $GLOBALS['meta']["adresse_site"];

View file

@ -69,7 +69,8 @@ function formulaires_editer_objet_verifier($type,$id='new', $oblis = array()){
} }
} }
foreach($oblis as $obli) { foreach($oblis as $obli) {
if (!_request($obli)) { $value = _request($obli);
if (is_null($value) OR !(is_array($value)?count($value):strlen($value))) {
if (!isset($erreurs[$obli])) { $erreurs[$obli] = ''; } if (!isset($erreurs[$obli])) { $erreurs[$obli] = ''; }
$erreurs[$obli] .= _T("info_obligatoire"); $erreurs[$obli] .= _T("info_obligatoire");
} }

View file

@ -1161,7 +1161,7 @@ function affdate_heure($numdate) {
* - Du 20 fevrier 2007 au 30 mars 2008 * - 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 * $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 * $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) * - hcal (generer une date au format hcal)
* - jour (forcer l'affichage des jours) * - jour (forcer l'affichage des jours)
* - annee (forcer l'affichage de l'annee) * - annee (forcer l'affichage de l'annee)
@ -1170,10 +1170,10 @@ function affdate_heure($numdate) {
* @param string $date_fin * @param string $date_fin
* @param string $horaire * @param string $horaire
* @param string $forme * @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 * annee pour forcer l'affichage de l'annee courante
* jour pour forcer l'affichage du nom du jour * 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 * @return string
*/ */
function affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme=''){ function affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme=''){
@ -2557,8 +2557,7 @@ function encoder_contexte_ajax($c,$form='', $emboite=NULL, $ajaxid='') {
if ($ajaxid AND is_string($ajaxid)){ if ($ajaxid AND is_string($ajaxid)){
$class .= ' ajax-id-'.$ajaxid; $class .= ' ajax-id-'.$ajaxid;
} }
$compl = "aria-live='polite' aria-atomic='true' "; return "<div class='$class' "."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
return "<div class='$class' ".$compl."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
} }
// la procedure inverse de encoder_contexte_ajax() // la procedure inverse de encoder_contexte_ajax()

View file

@ -145,6 +145,11 @@ function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cr
} else { } else {
// enlever le timestamp eventuel // enlever le timestamp eventuel
$source=preg_replace(',[?][0-9]+$,','',$source); $source=preg_replace(',[?][0-9]+$,','',$source);
if (strpos($source,"?")!==false
AND strncmp($source,_DIR_IMG,strlen(_DIR_IMG))==0
AND file_exists($f=preg_replace(',[?].*$,','',$source))){
$source = $f;
}
$fichier = $source; $fichier = $source;
} }

View file

@ -100,22 +100,22 @@ function protocole_implicite($url_absolue){
// ne s'applique qu'aux textes contenant des liens // ne s'applique qu'aux textes contenant des liens
// http://doc.spip.org/@liens_absolus // http://doc.spip.org/@liens_absolus
function liens_absolus($texte, $base='') { function liens_absolus($texte, $base='') {
if (preg_match_all(',(<(a|link|image)[[:space:]]+[^<>]*href=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS',
$texte, $liens, PREG_SET_ORDER)) { $texte, $liens, PREG_SET_ORDER)) {
foreach ($liens as $lien) { foreach ($liens as $lien) {
$abs = url_absolue($lien[3], $base); foreach(array('href', 'src') as $attr) {
if ($abs <> $lien[3] and !preg_match('/^#/',$lien[3])) $href = extraire_attribut($lien[0], $attr);
$texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte); if (strlen($href)>0) {
} $abs = url_absolue($href, $base);
} if ($href != $abs and !preg_match('/^#/',$href)) {
if (preg_match_all(',(<(img|script)[[:space:]]+[^<>]*src=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', $texte_lien = inserer_attribut($lien[0], $attr, $abs);
$texte, $liens, PREG_SET_ORDER)) { $texte = str_replace($lien[0],$texte_lien,$texte);
foreach ($liens as $lien) { }
$abs = url_absolue($lien[3], $base); }
if ($abs <> $lien[3]) }
$texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte);
} }
} }
return $texte; return $texte;
} }

View file

@ -181,8 +181,7 @@ function ecrire_fichier ($fichier, $contenu, $ignorer_echec = false, $truncate=t
// liberer le verrou et fermer le fichier // liberer le verrou et fermer le fichier
@chmod($fichier, _SPIP_CHMOD & 0666); @chmod($fichier, _SPIP_CHMOD & 0666);
if ($ok) { if ($ok) {
if (!defined('_OPCACHE_BUG') AND function_exists('opcache_invalidate')) spip_clear_opcode_cache(realpath($fichier));
opcache_invalidate($fichier, true);
return $ok; return $ok;
} }
} }
@ -294,11 +293,64 @@ function spip_unlink($f) {
* @param null $filename * @param null $filename
*/ */
function spip_clearstatcache($clear_realpath_cache = false, $filename=null){ function spip_clearstatcache($clear_realpath_cache = false, $filename=null){
return (version_compare(PHP_VERSION, '5.3.0') >= 0)? if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300) {
clearstatcache($clear_realpath_cache,$filename):clearstatcache(); // Below PHP 5.3, clearstatcache does not accept any function parameters.
return clearstatcache();
}
else {
return clearstatcache($clear_realpath_cache, $filename);
}
} }
/*
/**
* Invalidates a PHP file from any active opcode caches.
*
* If the opcode cache does not support the invalidation of individual files,
* the entire cache will be flushed.
* kudo : http://cgit.drupalcode.org/drupal/commit/?id=be97f50
*
* @param string $filepath
* The absolute path of the PHP file to invalidate.
*/
function spip_clear_opcode_cache($filepath) {
spip_clearstatcache(TRUE, $filepath);
// Zend OPcache
if (function_exists('opcache_invalidate')) {
opcache_invalidate($filepath, TRUE);
}
// APC.
if (function_exists('apc_delete_file')) {
// apc_delete_file() throws a PHP warning in case the specified file was
// not compiled yet.
// @see http://php.net/apc-delete-file
@apc_delete_file($filepath);
}
}
/**
* si opcache est actif et en mode validate_timestamps
* le timestamp ne sera checke qu'apres revalidate_freq s
* il faut donc attendre ce temps la pour etre sur qu'on va bien beneficier de la recompilation
* NB c'est une config foireuse deconseillee de opcode cache mais malheureusement utilisee par Octave
* cf http://stackoverflow.com/questions/25649416/when-exactly-does-php-5-5-opcache-check-file-timestamp-based-on-revalidate-freq
* et http://wiki.mikejung.biz/PHP_OPcache
*
* Ne fait rien en dehors de ce cas
*
*/
function spip_attend_invalidation_opcode_cache(){
if (function_exists('opcache_get_configuration')
AND @ini_get('opcache.enable')
AND @ini_get('opcache.validate_timestamps')
AND $duree = @ini_get('opcache.revalidate_freq') ) {
sleep($duree+1);
}
}
/**
* Suppression complete d'un repertoire. * Suppression complete d'un repertoire.
* *
* http://www.php.net/manual/en/function.rmdir.php#92050 * http://www.php.net/manual/en/function.rmdir.php#92050

View file

@ -88,12 +88,26 @@ function suivre_invalideur($cond, $modif=true) {
// Utilisee pour vider le cache depuis l'espace prive /**
// (ou juste les squelettes si un changement de config le necessite) * Purge un répertoire de ses fichiers
// si $atime est passee en argument, ne pas supprimer ce qui a servi *
// plus recemment que cette date (via fileatime) * Utilisée entre autres pour vider le cache depuis l'espace privé
// retourne le nombre de fichiers supprimes *
// http://doc.spip.org/@purger_repertoire * @uses supprimer_fichier()
*
* @param string $dir
* Chemin du répertoire à purger
* @param array $options
* Tableau des options. Peut être :
*
* - atime : timestamp pour ne supprimer que les fichiers antérieurs
* à cette date (via fileatime)
* - mtime : timestamp pour ne supprimer que les fichiers antérieurs
* à cette date (via filemtime)
* - limit : nombre maximum de suppressions
* @return int
* Nombre de fichiers supprimés
**/
function purger_repertoire($dir, $options=array()) { function purger_repertoire($dir, $options=array()) {
$handle = @opendir($dir); $handle = @opendir($dir);
if (!$handle) return; if (!$handle) return;
@ -105,8 +119,9 @@ function purger_repertoire($dir, $options=array()) {
if ($fichier[0] == '.') continue; if ($fichier[0] == '.') continue;
$chemin = "$dir/$fichier"; $chemin = "$dir/$fichier";
if (is_file($chemin)) { if (is_file($chemin)) {
if (!isset($options['atime']) if ( (!isset($options['atime']) OR (@fileatime($chemin) < $options['atime']))
OR (@fileatime($chemin) < $options['atime'])) { AND (!isset($options['mtime']) OR (@filemtime($chemin) < $options['mtime']))
) {
supprimer_fichier($chemin); supprimer_fichier($chemin);
$total ++; $total ++;
} }

View file

@ -110,7 +110,7 @@ function traduire_nom_langue($lang) {
// C'est utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT. // C'est utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT.
// http://doc.spip.org/@lang_dir // http://doc.spip.org/@lang_dir
function lang_dir($lang='', $droitier='ltr', $gaucher='rtl') { 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) ? return in_array(($lang ? $lang : $GLOBALS['spip_lang']), $lang_rtl) ?
$gaucher : $droitier; $gaucher : $droitier;

View file

@ -33,7 +33,7 @@ $GLOBALS['codes_langues'] = array(
'ay' => "Aymara", 'ay' => "Aymara",
'az' => "Az&#601;rbaycan dili", 'az' => "Az&#601;rbaycan dili",
'ba' => "Bashkir", 'ba' => "Bashkir",
'be' => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1110;", 'be' => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1072;&#1103;",
'ber_tam' => "Tamazigh", 'ber_tam' => "Tamazigh",
'ber_tam_tfng' => "Tamazigh tifinagh", 'ber_tam_tfng' => "Tamazigh tifinagh",
'bg' => "&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;", 'bg' => "&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;",
@ -48,7 +48,7 @@ $GLOBALS['codes_langues'] = array(
'co' => "corsu", 'co' => "corsu",
'cpf' => "Kr&eacute;ol r&eacute;yon&eacute;", 'cpf' => "Kr&eacute;ol r&eacute;yon&eacute;",
'cpf_dom' => "Krey&ograve;l", 'cpf_dom' => "Krey&ograve;l",
'cpf_hat' => "Kr&eacute;y&ograve;l (P&eacute;yi Dayiti)", 'cpf_hat' => "Krey&ograve;l (Peyi Dayiti)",
'cs' => "&#269;e&#353;tina", 'cs' => "&#269;e&#353;tina",
'cy' => "Cymraeg", # welsh, gallois 'cy' => "Cymraeg", # welsh, gallois
'da' => "dansk", 'da' => "dansk",
@ -91,7 +91,7 @@ $GLOBALS['codes_langues'] = array(
'hi' => "&#2361;&#2367;&#2306;&#2342;&#2368;", 'hi' => "&#2361;&#2367;&#2306;&#2342;&#2368;",
'hr' => "hrvatski", 'hr' => "hrvatski",
'hu' => "magyar", 'hu' => "magyar",
'hy' => "Armenian", 'hy' => "&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;",// Arménien
'ia' => "Interlingua", 'ia' => "Interlingua",
'id' => "Indonesia", 'id' => "Indonesia",
'ie' => "Interlingue", 'ie' => "Interlingue",
@ -105,7 +105,7 @@ $GLOBALS['codes_langues'] = array(
'ka' => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;", 'ka' => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;",
'kk' => "&#1179;&#1072;&#1079;&#1072;&#1179;&#32;&#1090;&#1110;&#1083;&#1110;", // Kazakh 'kk' => "&#1179;&#1072;&#1079;&#1072;&#1179;&#32;&#1090;&#1110;&#1083;&#1110;", // Kazakh
'kl' => "kalaallisut", 'kl' => "kalaallisut",
'km' => "Cambodian", 'km' => "&#6039;&#6070;&#6047;&#6070;&#6017;&#6098;&#6040;&#6082;&#6042;",// Khmer
'kn' => "Kannada", 'kn' => "Kannada",
'ko' => "&#54620;&#44397;&#50612;", 'ko' => "&#54620;&#44397;&#50612;",
'kok' => "&#2325;&#2379;&#2306;&#2325;&#2339;&#2368;", // Konkani 'kok' => "&#2325;&#2379;&#2306;&#2325;&#2339;&#2368;", // Konkani
@ -144,6 +144,7 @@ $GLOBALS['codes_langues'] = array(
'oc_lnc' => "&ograve;c lengadocian", 'oc_lnc' => "&ograve;c lengadocian",
'oc_ni' => "&ograve;c ni&ccedil;ard", 'oc_ni' => "&ograve;c ni&ccedil;ard",
'oc_ni_la' => "&ograve;c ni&ccedil;ard (larg)", 'oc_ni_la' => "&ograve;c ni&ccedil;ard (larg)",
'oc_ni_mis' => "&ograve;c nissart (mistralenc)",
'oc_prv' => "&ograve;c proven&ccedil;au", 'oc_prv' => "&ograve;c proven&ccedil;au",
'oc_gsc' => "&ograve;c gascon", 'oc_gsc' => "&ograve;c gascon",
'oc_lms' => "&ograve;c lemosin", 'oc_lms' => "&ograve;c lemosin",

View file

@ -169,7 +169,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='')
// dans le cas d'un lien vers un doc, ajouter le type='mime/type' // dans le cas d'un lien vers un doc, ajouter le type='mime/type'
if ($type == 'document' if ($type == 'document'
AND $mime = sql_getfetsel('mime_type', 'spip_types_documents', 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) '','','','',$connect)
) )
$r['mime'] = $mime; $r['mime'] = $mime;
@ -240,6 +240,7 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
if (strpos($texte,"<")!==false AND if (strpos($texte,"<")!==false AND
preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)) { preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)) {
include_spip('public/assembler'); include_spip('public/assembler');
$wrap_embed_html = charger_fonction("wrap_embed_html","inc",true);
foreach ($matches as $match) { foreach ($matches as $match) {
// Recuperer l'appel complet (y compris un eventuel lien) // Recuperer l'appel complet (y compris un eventuel lien)
@ -254,7 +255,9 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
$lien = array( $lien = array(
'href' => extraire_attribut($r[0],'href'), 'href' => extraire_attribut($r[0],'href'),
'class' => extraire_attribut($r[0],'class'), 'class' => extraire_attribut($r[0],'class'),
'mime' => extraire_attribut($r[0],'type') 'mime' => extraire_attribut($r[0],'type'),
'title' => extraire_attribut($r[0],'title'),
'hreflang' => extraire_attribut($r[0],'hreflang')
); );
$n = strlen($r[0]); $n = strlen($r[0]);
$a -= $n; $a -= $n;
@ -274,7 +277,7 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
// dans les parametres, plutot que les liens echappes // dans les parametres, plutot que les liens echappes
if (!is_null($liens)) if (!is_null($liens))
$params = str_replace($liens[0], $liens[1], $params); $params = str_replace($liens[0], $liens[1], $params);
$modele = inclure_modele($type, $id, $params, $lien, $connect, $env); $modele = inclure_modele($type, $id, $params, $lien, $connect, $env);
// en cas d'echec, // en cas d'echec,
// si l'objet demande a une url, // si l'objet demande a une url,
// creer un petit encadre vers elle // creer un petit encadre vers elle
@ -300,6 +303,9 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='', $liens
// le remplacer dans le texte // le remplacer dans le texte
if ($modele !== false) { if ($modele !== false) {
$modele = protege_js_modeles($modele); $modele = protege_js_modeles($modele);
if ($wrap_embed_html){
$modele = $wrap_embed_html($mod,$modele);
}
$rempl = code_echappement($modele, $echap); $rempl = code_echappement($modele, $echap);
$texte = substr($texte, 0, $a) $texte = substr($texte, 0, $a)
. $rempl . $rempl

View file

@ -59,7 +59,7 @@ function inc_log_dist($message, $logname=NULL, $logdir=NULL, $logsuf=NULL) {
$debugverb = "$fi:L$l:$fu"."():"; $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 //distinguer les logs prives et publics dans les grep
. $debugverb . $debugverb
. (test_espace_prive()?':Pri:':':Pub:') . (test_espace_prive()?':Pri:':':Pub:')

View file

@ -119,10 +119,14 @@ function minipres($titre='', $corps="", $onload='', $all_inline = false)
$titre = ($titre == 'install') $titre = ($titre == 'install')
? _T('avis_espace_interdit') ? _T('avis_espace_interdit')
: $titre . '&nbsp;: '. _T('info_acces_interdit'); : $titre . '&nbsp;: '. _T('info_acces_interdit');
$statut = isset($GLOBALS['visiteur_session']['statut']) ? $GLOBALS['visiteur_session']['statut'] : '';
$nom = isset($GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : '';
$corps = generer_form_ecrire('accueil', '','', $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) if (!_AJAX)

View file

@ -213,7 +213,7 @@ function f_queue(&$texte){
// eviter une inclusion si rien a faire // eviter une inclusion si rien a faire
if (_request('action')=='cron' if (_request('action')=='cron'
OR queue_sleep_time_to_next_job() OR queue_sleep_time_to_next_job()>0
OR defined('_DEBUG_BLOCK_QUEUE')){ OR defined('_DEBUG_BLOCK_QUEUE')){
return $texte; return $texte;
} }

View file

@ -122,6 +122,10 @@ function f_afficher_blocs_ecrire($flux) {
if (!isset($o[$exec])){ if (!isset($o[$exec])){
$o[$exec] = trouver_objet_exec($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); $typepage = (isset($flux['args']['contexte']['type-page'])?$flux['args']['contexte']['type-page']:$exec);
if ($fond == "prive/squelettes/navigation/$typepage"){ if ($fond == "prive/squelettes/navigation/$typepage"){
$flux['data']['texte'] = pipeline('affiche_gauche',array('args'=>$flux['args']['contexte'],'data'=>$flux['data']['texte'])); $flux['data']['texte'] = pipeline('affiche_gauche',array('args'=>$flux['args']['contexte'],'data'=>$flux['data']['texte']));
@ -202,6 +206,11 @@ function f_queue_affiche_milieu($flux){
function trouver_objet_exec($exec){ function trouver_objet_exec($exec){
static $objet_exec=array(); static $objet_exec=array();
if (!$exec) return false; 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])){ if (!isset($objet_exec[$exec])){
$objet_exec[$exec]=false; $objet_exec[$exec]=false;
$infos = lister_tables_objets_sql(); $infos = lister_tables_objets_sql();

View file

@ -518,9 +518,14 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
// generer le fichier _CACHE_PIPELINE // generer le fichier _CACHE_PIPELINE
pipeline_precompile(); pipeline_precompile();
// lancer et initialiser les nouveaux crons ! // attendre eventuellement l'invalidation du cache opcode
include_spip('inc/genie'); spip_attend_invalidation_opcode_cache();
genie_queue_watch_dist();
if (spip_connect()) {
// lancer et initialiser les nouveaux crons !
include_spip('inc/genie');
genie_queue_watch_dist();
}
return ($GLOBALS['meta']['plugin'] != $actifs_avant); return ($GLOBALS['meta']['plugin'] != $actifs_avant);
} }
@ -786,4 +791,4 @@ function ecrire_fichier_php($nom, $contenu, $comment='')
ecrire_fichier($nom, ecrire_fichier($nom,
'<'.'?php' . "\n" . $comment ."\nif (defined('_ECRIRE_INC_VERSION')) {\n". $contenu . "}\n?".'>'); '<'.'?php' . "\n" . $comment ."\nif (defined('_ECRIRE_INC_VERSION')) {\n". $contenu . "}\n?".'>');
} }
?>

View file

@ -1,213 +1,213 @@
<?php <?php
/***************************************************************************\ /***************************************************************************\
* SPIP, Systeme de publication pour l'internet * * SPIP, Systeme de publication pour l'internet *
* * * *
* Copyright (c) 2001-2014 * * Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* * * *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * 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. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/ \***************************************************************************/
/** /**
* Fonctions d'affichage pour l'espace privé (hors squelettes) * Fonctions d'affichage pour l'espace privé (hors squelettes)
* *
* @package SPIP\Core\Affichage * @package SPIP\Core\Affichage
**/ **/
if (!defined('_ECRIRE_INC_VERSION')) return; if (!defined('_ECRIRE_INC_VERSION')) return;
/** /**
* Affiche un code html (echo) et log l'affichage car cet echo est anormal ! * Affiche un code html (echo) et log l'affichage car cet echo est anormal !
* *
* Signale une fonction qui devrait retourner un contenu mais effectue * Signale une fonction qui devrait retourner un contenu mais effectue
* un echo à la place pour compatibilité ascendante * un echo à la place pour compatibilité ascendante
* *
* @deprecated * @deprecated
* Utiliser des squelettes pour l'affichage ! * Utiliser des squelettes pour l'affichage !
* *
* @param string $f * @param string $f
* Nom de la fonction * Nom de la fonction
* @param string $ret * @param string $ret
* Code HTML à afficher * Code HTML à afficher
* @return void * @return void
**/ **/
function echo_log($f, $ret) { function echo_log($f, $ret) {
spip_log("Page " . self() . " function $f: echo ".substr($ret,0,50)."...",'echo'); spip_log("Page " . self() . " function $f: echo ".substr($ret,0,50)."...",'echo');
echo echo
(_SIGNALER_ECHOS?"#Echo par $f#" :"") (_SIGNALER_ECHOS?"#Echo par $f#" :"")
. $ret; . $ret;
} }
/** /**
* Retourne le code HTML d'un début de cadre pour le centre de page (haut de page) * Retourne le code HTML d'un début de cadre pour le centre de page (haut de page)
* @return string Code HTML * @return string Code HTML
*/ */
function debut_grand_cadre(){ return "\n<div class='table_page'>\n";} 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) * Retourne le code HTML d'une fin de cadre pour le centre de page (haut de page)
* @return string Code HTML * @return string Code HTML
*/ */
function fin_grand_cadre(){ return "\n</div>";} function fin_grand_cadre(){ return "\n</div>";}
// Debut de la colonne de gauche // Debut de la colonne de gauche
// div navigation fermee par creer_colonne_droite qui ouvre // div navigation fermee par creer_colonne_droite qui ouvre
// div extra lui-meme ferme par debut_droite qui ouvre // div extra lui-meme ferme par debut_droite qui ouvre
// div contenu lui-meme ferme par fin_gauche() ainsi que // div contenu lui-meme ferme par fin_gauche() ainsi que
// div conteneur // div conteneur
// http://doc.spip.org/@debut_gauche // http://doc.spip.org/@debut_gauche
/** /**
* Retourne le code HTML du début de la colonne gauche * Retourne le code HTML du début de la colonne gauche
* @return string Code HTML * @return string Code HTML
*/ */
function debut_gauche() { return "<div id='conteneur' class=''>\n<div id='navigation' class='lat' role='contentinfo'>\n";} 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 * Retourne le code HTML de la fin de la colonne
* @return string Code HTML * @return string Code HTML
*/ */
function fin_gauche(){return "</div></div><br class='nettoyeur' />";} function fin_gauche(){return "</div></div><br class='nettoyeur' />";}
/** /**
* Retourne le code HTML du changement de colonne (passer de la gauche à la droite) * Retourne le code HTML du changement de colonne (passer de la gauche à la droite)
* @return string Code HTML * @return string Code HTML
*/ */
function creer_colonne_droite(){ function creer_colonne_droite(){
static $deja_colonne_droite; static $deja_colonne_droite;
if ($GLOBALS['spip_ecran']!='large' OR $deja_colonne_droite) return ''; if ($GLOBALS['spip_ecran']!='large' OR $deja_colonne_droite) return '';
$deja_colonne_droite = true; $deja_colonne_droite = true;
return "\n</div><div id='extra' class='lat' role='complementary'>"; return "\n</div><div id='extra' class='lat' role='complementary'>";
} }
/** /**
* Retourne le code HTML de la colonne droite et du centre de page * Retourne le code HTML de la colonne droite et du centre de page
* @return string Code HTML * @return string Code HTML
*/ */
function debut_droite() { function debut_droite() {
return liste_objets_bloques(_request('exec')) return liste_objets_bloques(_request('exec'))
. creer_colonne_droite() . creer_colonne_droite()
. "</div>" . "</div>"
. "\n<div id='contenu'>"; . "\n<div id='contenu'>";
} }
// http://doc.spip.org/@liste_articles_bloques // http://doc.spip.org/@liste_articles_bloques
function liste_objets_bloques($exec,$contexte=array(),$auteur=null){ function liste_objets_bloques($exec,$contexte=array(),$auteur=null){
$res = ''; $res = '';
if ($GLOBALS['meta']["articles_modif"] != "non") { if ($GLOBALS['meta']["articles_modif"] != "non") {
include_spip('inc/drapeau_edition'); include_spip('inc/drapeau_edition');
if (is_null($auteur)) if (is_null($auteur))
$auteur = $GLOBALS['visiteur_session']; $auteur = $GLOBALS['visiteur_session'];
if ($en_cours=trouver_objet_exec($exec) if ($en_cours=trouver_objet_exec($exec)
AND $en_cours['edition'] AND $en_cours['edition']
AND $type = $en_cours['type'] AND $type = $en_cours['type']
AND ($id = $contexte[$en_cours['id_table_objet']] OR $id = _request($en_cours['id_table_objet']))) { 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 // marquer le fait que l'objet est ouvert en edition par toto
// a telle date ; une alerte sera donnee aux autres redacteurs // a telle date ; une alerte sera donnee aux autres redacteurs
signale_edition ($id, $auteur, $type); signale_edition ($id, $auteur, $type);
} }
$objets_ouverts = liste_drapeau_edition($auteur['id_auteur']); $objets_ouverts = liste_drapeau_edition($auteur['id_auteur']);
if (count($objets_ouverts)) { if (count($objets_ouverts)) {
$res .= recuperer_fond('prive/objets/liste/objets-en-edition',array(),array('ajax'=>true)); $res .= recuperer_fond('prive/objets/liste/objets-en-edition',array(),array('ajax'=>true));
} }
} }
return $res; return $res;
} }
// Fin de page de l'interface privee. // Fin de page de l'interface privee.
// Elle comporte une image invisible declenchant une tache de fond // Elle comporte une image invisible declenchant une tache de fond
// http://doc.spip.org/@fin_page // http://doc.spip.org/@fin_page
function fin_page(){ function fin_page(){
include_spip('inc/pipelines'); include_spip('inc/pipelines');
// avec &var_profile=1 on a le tableau de mesures SQL // avec &var_profile=1 on a le tableau de mesures SQL
$debug = ((_request('exec') !== 'valider_xml') $debug = ((_request('exec') !== 'valider_xml')
AND ((_request('var_mode') == 'debug') AND ((_request('var_mode') == 'debug')
OR (isset($GLOBALS['tableau_des_temps']) AND $GLOBALS['tableau_des_temps']) OR (isset($GLOBALS['tableau_des_temps']) AND $GLOBALS['tableau_des_temps'])
AND isset($_COOKIE['spip_admin']))); AND isset($_COOKIE['spip_admin'])));
$t = '</div><div id="pied"><div class="largeur">' $t = '</div><div id="pied"><div class="largeur">'
. recuperer_fond('prive/squelettes/inclure/pied') . recuperer_fond('prive/squelettes/inclure/pied')
. "</div>" . "</div>"
. "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page() . "</div></div>" // cf. div#page et div.largeur ouvertes dans conmmencer_page()
. ($debug?erreur_squelette():'') . ($debug?erreur_squelette():'')
. "</body></html>\n"; . "</body></html>\n";
return f_queue($t); return f_queue($t);
} }
function html_tests_js(){ function html_tests_js(){
if (_SPIP_AJAX AND !defined('_TESTER_NOSCRIPT')) { if (_SPIP_AJAX AND !defined('_TESTER_NOSCRIPT')) {
// pour le pied de page (deja defini si on est validation XML) // pour le pied de page (deja defini si on est validation XML)
define('_TESTER_NOSCRIPT', define('_TESTER_NOSCRIPT',
"<noscript>\n<div style='display:none;'><img src='" "<noscript>\n<div style='display:none;'><img src='"
. generer_url_ecrire('test_ajax', 'js=-1') . generer_url_ecrire('test_ajax', 'js=-1')
. "' width='1' height='1' alt='' /></div></noscript>\n"); . "' width='1' height='1' alt='' /></div></noscript>\n");
} }
return return
(defined('_SESSION_REJOUER') ? _SESSION_REJOUER : '') (defined('_SESSION_REJOUER') ? _SESSION_REJOUER : '')
. (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : ''); . (defined('_TESTER_NOSCRIPT') ? _TESTER_NOSCRIPT : '');
} }
function info_maj_spip(){ function info_maj_spip(){
$maj = $GLOBALS['meta']['info_maj_spip']; $maj = $GLOBALS['meta']['info_maj_spip'];
if (!$maj) if (!$maj)
return ""; return "";
$maj = explode('|',$maj); $maj = explode('|',$maj);
// c'est une ancienne notif, on a fait la maj depuis ! // c'est une ancienne notif, on a fait la maj depuis !
if ($GLOBALS['spip_version_branche']!==reset($maj)) if ($GLOBALS['spip_version_branche']!==reset($maj))
return ""; return "";
if (!autoriser('webmestre')) if (!autoriser('webmestre'))
return ""; return "";
array_shift($maj); array_shift($maj);
$maj = implode('|',$maj); $maj = implode('|',$maj);
return "$maj<br />"; return "$maj<br />";
} }
// http://doc.spip.org/@info_copyright // http://doc.spip.org/@info_copyright
function info_copyright() { function info_copyright() {
global $spip_version_affichee, $spip_lang; global $spip_version_affichee, $spip_lang;
$version = $spip_version_affichee; $version = $spip_version_affichee;
// //
// Mention, le cas echeant, de la revision SVN courante // Mention, le cas echeant, de la revision SVN courante
// //
if ($svn_revision = version_svn_courante(_DIR_RACINE)) { if ($svn_revision = version_svn_courante(_DIR_RACINE)) {
$version .= ' ' . (($svn_revision < 0) ? 'SVN ':'') $version .= ' ' . (($svn_revision < 0) ? 'SVN ':'')
. "[<a href='http://core.spip.org/trac/spip/changeset/" . "[<a href='http://core.spip.net/projects/spip/repository/revisions/"
. abs($svn_revision) . "' onclick=\"window.open(this.href); return false;\">" . abs($svn_revision) . "' onclick=\"window.open(this.href); return false;\">"
. abs($svn_revision) . "</a>]"; . abs($svn_revision) . "</a>]";
} }
// et la version de l'ecran de securite // et la version de l'ecran de securite
$secu = defined('_ECRAN_SECURITE') $secu = defined('_ECRAN_SECURITE')
? "<br />"._T('ecran_securite',array('version'=>_ECRAN_SECURITE)) ? "<br />"._T('ecran_securite',array('version'=>_ECRAN_SECURITE))
: ''; : '';
return _T('info_copyright', return _T('info_copyright',
array('spip' => "<b>SPIP $version</b> ", array('spip' => "<b>SPIP $version</b> ",
'lien_gpl' => '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>")) "<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; . $secu;
} }
// http://doc.spip.org/@formulaire_recherche // http://doc.spip.org/@formulaire_recherche
function formulaire_recherche($page, $complement=""){ function formulaire_recherche($page, $complement=""){
$recherche = _request('recherche'); $recherche = _request('recherche');
$recherche_aff = entites_html($recherche); $recherche_aff = entites_html($recherche);
if (!strlen($recherche)) { if (!strlen($recherche)) {
$recherche_aff = _T('info_rechercher'); $recherche_aff = _T('info_rechercher');
$onfocus = " onfocus=\"this.value='';\""; $onfocus = " onfocus=\"this.value='';\"";
} else $onfocus = ''; } else $onfocus = '';
$form = '<input type="text" size="10" value="'.$recherche_aff.'" name="recherche" class="recherche" accesskey="r"' . $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')."' />"; $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>"; return "<div class='spip_recherche'>".generer_form_ecrire($page, $form . $complement, " method='get'")."</div>";
} }
?> ?>

View file

@ -267,7 +267,8 @@ function puce_statut_changement_rapide($id, $statut, $id_rubrique, $type='articl
$desc = lister_tables_objets_sql($table); $desc = lister_tables_objets_sql($table);
if (!isset($desc['statut_textes_instituer'])) if (!isset($desc['statut_textes_instituer']))
return $inser_puce; return $inser_puce;
include_spip('inc/autoriser');
// cas ou l'on a un parent connu (devrait disparaitre au profit du second cas plus generique) // cas ou l'on a un parent connu (devrait disparaitre au profit du second cas plus generique)
if ($id_rubrique){ if ($id_rubrique){
if (!autoriser('publierdans', 'rubrique', $id_rubrique)) if (!autoriser('publierdans', 'rubrique', $id_rubrique))

View file

@ -278,7 +278,7 @@ function queue_schedule($force_jobs = null){
} }
// rien a faire si le prochain job est encore dans le futur // 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); spip_log("queue_sleep_time_to_next_job",'jq'._LOG_DEBUG);
return; return;
} }
@ -477,7 +477,7 @@ function queue_set_next_job_time($next) {
// toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes // 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 // 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 // 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 ( if (
($curr_next<=$time AND $next>$time) // le prochain job est dans le futur mais pas la date planifiee actuelle ($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 OR $curr_next>$next // le prochain job est plus tot que la date planifiee actuelle
@ -505,8 +505,9 @@ function queue_set_next_job_time($next) {
function queue_affichage_cron(){ function queue_affichage_cron(){
$texte = ""; $texte = "";
$time_to_next = queue_sleep_time_to_next_job();
// rien a faire si le prochain job est encore dans le futur // 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; return $texte;
// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
@ -515,6 +516,11 @@ function queue_affichage_cron(){
@touch($lock); @touch($lock);
// il y a des taches en attentes // 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); $url_cron = generer_url_action('cron','',false,true);
@ -544,13 +550,25 @@ function queue_affichage_cron(){
$errno, $errstr, 1); $errno, $errstr, 1);
if ($fp) { if ($fp) {
$timeout = 200; // ms
stream_set_timeout($fp,0,$timeout * 1000);
$query = $parts['path'].($parts['query']?"?".$parts['query']:""); $query = $parts['path'].($parts['query']?"?".$parts['query']:"");
$out = "GET ".$query." HTTP/1.1\r\n"; $out = "GET ".$query." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n"; $out.= "Host: ".$parts['host']."\r\n";
$out.= "Connection: Close\r\n\r\n"; $out.= "Connection: Close\r\n\r\n";
fwrite($fp, $out); 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); fclose($fp);
return $texte; if (!$urgent)
return $texte;
} }
} }
// si fsockopen n'est pas dispo on essaye cURL : // si fsockopen n'est pas dispo on essaye cURL :
@ -562,12 +580,13 @@ function queue_affichage_cron(){
// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597 // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
curl_setopt($ch, CURLOPT_NOSIGNAL, 1); curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
// valeur mini pour que la requete soit lancee // valeur mini pour que la requete soit lancee
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
// lancer // lancer
curl_exec($ch); curl_exec($ch);
// fermer // fermer
curl_close($ch); curl_close($ch);
return $texte; if (!$urgent)
return $texte;
} }
} }

View file

@ -19,7 +19,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* *
*/ */
$GLOBALS['visiteur_session'] = ''; # globale decrivant l'auteur $GLOBALS['visiteur_session'] = array(); # globale decrivant l'auteur
/** /**
* 3 actions sur les sessions, selon le type de l'argument: * 3 actions sur les sessions, selon le type de l'argument:
@ -65,15 +65,25 @@ function inc_session_dist($auteur=false)
*/ */
function supprimer_sessions($id_auteur, $toutes=true, $actives=true) { 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"); spip_log("supprimer sessions auteur $id_auteur");
if ($toutes OR $id_auteur!==$GLOBALS['visiteur_session']['id_auteur']) { if ($toutes OR $id_auteur!==$GLOBALS['visiteur_session']['id_auteur']) {
if ($dir = opendir(_DIR_SESSIONS)){ 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) { while(($f = readdir($dir)) !== false) {
$nb_files++;
if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)){ if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)){
$f = _DIR_SESSIONS . $f; $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); spip_unlink($f);
}
// si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
// cd http://core.spip.org/issues/3276
elseif($nb_files>$nb_max_files AND !intval($regs[1]) AND ($t_short > filemtime($f))){
spip_unlink($f);
}
} }
} }
} }
@ -102,12 +112,7 @@ function ajouter_session($auteur) {
// Attention un visiteur peut avoir une session et un id=0, // Attention un visiteur peut avoir une session et un id=0,
// => ne pas melanger les sessions des differents visiteurs // => ne pas melanger les sessions des differents visiteurs
$id_auteur = intval($auteur['id_auteur']); $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) // 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 // on va vérifier s'il y a vraiment des choses à écrire
if (!$id_auteur){ if (!$id_auteur){
@ -124,14 +129,28 @@ function ajouter_session($auteur) {
unset($auteur_verif[$variable]); unset($auteur_verif[$variable]);
} }
} }
// Si après ça la session est vide et qu'on a pas de cookie session, on arrete
// Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là if (!$auteur_verif AND !isset($_COOKIE['spip_session'])){
if (!$auteur_verif){
if (@file_exists($fichier_session)) spip_unlink($fichier_session);
return false; 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 // Maintenant on sait qu'on a des choses à écrire
// On s'assure d'avoir au moins ces valeurs // On s'assure d'avoir au moins ces valeurs
$auteur['id_auteur'] = $id_auteur; $auteur['id_auteur'] = $id_auteur;
@ -268,9 +287,17 @@ function session_get($nom) {
* @return void * @return void
*/ */
function session_set($nom, $val=null) { 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']); ajouter_session($GLOBALS['visiteur_session']);
actualiser_sessions($GLOBALS['visiteur_session']); actualiser_sessions($GLOBALS['visiteur_session']);
} }

View file

@ -156,6 +156,7 @@ function typo($letexte, $echapper=true, $connect=null, $env=array()) {
if (is_null($connect)){ if (is_null($connect)){
$connect = ''; $connect = '';
$interdire_script = true; $interdire_script = true;
$env['espace_prive'] = 1;
} }
// Echapper les codes <html> etc // Echapper les codes <html> etc
@ -183,6 +184,12 @@ function typo($letexte, $echapper=true, $connect=null, $env=array()) {
if ($interdire_script) if ($interdire_script)
$letexte = interdire_scripts($letexte); $letexte = interdire_scripts($letexte);
// Dans l'espace prive on se mefie de tout contenu dangereux
// https://core.spip.net/issues/3371
if (isset($env['espace_prive']) AND $env['espace_prive']){
$letexte = echapper_html_suspect($letexte);
}
return $letexte; return $letexte;
} }

View file

@ -75,12 +75,8 @@ function code_echappement($rempl, $source='', $no_transform=false, $mode=NULL) {
$return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>"; $return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>";
} }
return $return return $return;
. ((!$no_transform AND $mode == 'div')
? "\n\n"
: ''
);
;
} }
@ -156,7 +152,7 @@ function traiter_echap_math_dist($regs) {
return $t; 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 $source voir commentaire infra (echappe_retour)
// - pour $no_transform voir le filtre post_autobr dans inc/filtres // - pour $no_transform voir le filtre post_autobr dans inc/filtres
@ -385,15 +381,52 @@ function echapper_faux_tags($letexte){
$letexte = ""; $letexte = "";
while (count($textMatches)) { while (count($textMatches)) {
// un texte a echapper // un texte a echapper
$letexte .= str_replace(array("<"),array('&lt;'),array_shift($textMatches)); $letexte .= str_replace("<",'&lt;',array_shift($textMatches));
// un tag html qui a servit a faite le split // un tag html qui a servit a faite le split
$letexte .= array_shift($textMatches); $letexte .= array_shift($textMatches);
} }
return $letexte; return $letexte;
} }
// Securite : utiliser SafeHTML s'il est present dans ecrire/safehtml/ /**
// http://doc.spip.org/@safehtml * Si le html contenu dans un texte ne passe pas sans transformation a travers safehtml
* on l'echappe
* si safehtml ne renvoie pas la meme chose on echappe les < en &lt; pour montrer le contenu brut
*
* @param string $texte
* @return string
*/
function echapper_html_suspect($texte){
if (strpos($texte,'<')===false OR strpos($texte,'=')===false)
return $texte;
// on teste sur strlen car safehtml supprime le contenu dangereux
// mais il peut aussi changer des ' en " sur les attributs html,
// donc un test d'egalite est trop strict
if (strlen(safehtml($texte))!==strlen($texte)){
$texte = str_replace("<","&lt;",$texte);
}
return $texte;
}
/**
* Sécurise un texte HTML
*
* Échappe le code PHP et JS.
* Applique en plus safehtml si un plugin le définit dans inc/safehtml.php
*
* Permet de protéger les textes issus d'une origine douteuse (forums, syndications...)
*
* @filtre
* @link http://www.spip.net/4310
*
* @param string $t
* Texte à sécuriser
* @return string
* Texte sécurisé
**/
function safehtml($t) { function safehtml($t) {
static $safehtml; static $safehtml;

View file

@ -140,9 +140,13 @@ function inc_traduire_dist($ori, $lang) {
if (empty($GLOBALS[$var])) { if (empty($GLOBALS[$var])) {
charger_langue($lang, $module); charger_langue($lang, $module);
// surcharge perso -- on cherche (lang/)local_xx.php ... // surcharge perso
if (!isset($local['local_'.$lang])) // -- 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); $local['local_'.$lang] = chercher_module_lang('local', $lang);
}
if ($local['local_'.$lang]) if ($local['local_'.$lang])
surcharger_langue($local['local_'.$lang]); surcharger_langue($local['local_'.$lang]);
// ... puis (lang/)local.php // ... puis (lang/)local.php

View file

@ -165,7 +165,7 @@ function nettoyer_url_page($url, $contexte=array())
$url_objets = urls_liste_objets(); $url_objets = urls_liste_objets();
$raccourci_url_page_html = ',^(?:[^?]*/)?('. $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,'; $raccourci_url_page_html = ',^(?:[^?]*/)?('. $url_objets . ')([0-9]+)(?:\.html)?([?&].*)?$,';
$raccourci_url_page_id = ',^(?:[^?]*/)?('. $url_objets .')\.php3?[?]id_\1=([0-9]+)([?&].*)?$,'; $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) if (preg_match($raccourci_url_page_html, $url, $regs)
OR preg_match($raccourci_url_page_id, $url, $regs) OR preg_match($raccourci_url_page_id, $url, $regs)

View file

@ -745,7 +745,7 @@ function queue_sleep_time_to_next_job($force=null) {
return null; return null;
if (!$_SERVER['REQUEST_TIME']) if (!$_SERVER['REQUEST_TIME'])
$_SERVER['REQUEST_TIME'] = time(); $_SERVER['REQUEST_TIME'] = time();
return max(0,$queue_next_job_time-$_SERVER['REQUEST_TIME']); return $queue_next_job_time-$_SERVER['REQUEST_TIME'];
} }
@ -969,8 +969,11 @@ function find_in_path ($file, $dirname='', $include=false) {
include_once _ROOT_CWD . $a; include_once _ROOT_CWD . $a;
$inc[$dirname][$file] = $inc[''][$dirname . $file] = true; $inc[$dirname][$file] = $inc[''][$dirname . $file] = true;
} }
if (!defined('_SAUVER_CHEMIN')) if (!defined('_SAUVER_CHEMIN')){
define('_SAUVER_CHEMIN',true); // si le chemin n'a pas encore ete charge, ne pas lever le flag, ne pas cacher
if (is_null($GLOBALS['path_files'])) return $a;
define('_SAUVER_CHEMIN', true);
}
return $GLOBALS['path_files'][$GLOBALS['path_sig']][$dirname][$file] = $GLOBALS['path_files'][$GLOBALS['path_sig']][''][$dirname . $file] = $a; return $GLOBALS['path_files'][$GLOBALS['path_sig']][$dirname][$file] = $GLOBALS['path_files'][$GLOBALS['path_sig']][''][$dirname . $file] = $a;
} }
} }
@ -988,8 +991,11 @@ function find_in_path ($file, $dirname='', $include=false) {
} }
} }
if (!defined('_SAUVER_CHEMIN')) if (!defined('_SAUVER_CHEMIN')){
define('_SAUVER_CHEMIN',true); // si le chemin n'a pas encore ete charge, ne pas lever le flag, ne pas cacher
if (is_null($GLOBALS['path_files'])) return false;
define('_SAUVER_CHEMIN', true);
}
return $GLOBALS['path_files'][$GLOBALS['path_sig']][$dirname][$file] = $GLOBALS['path_files'][$GLOBALS['path_sig']][''][$dirname . $file] = false; return $GLOBALS['path_files'][$GLOBALS['path_sig']][$dirname][$file] = $GLOBALS['path_files'][$GLOBALS['path_sig']][''][$dirname . $file] = false;
} }
@ -1873,6 +1879,7 @@ function init_var_mode(){
if (!defined('_VAR_MODE')) define('_VAR_MODE',$_GET['var_mode']); if (!defined('_VAR_MODE')) define('_VAR_MODE',$_GET['var_mode']);
break; break;
} }
if (isset($GLOBALS['visiteur_session']['nom']))
spip_log($GLOBALS['visiteur_session']['nom'] spip_log($GLOBALS['visiteur_session']['nom']
. " "._VAR_MODE); . " "._VAR_MODE);
} }

View file

@ -84,15 +84,19 @@ AND @file_exists($f = _ROOT_RACINE . _NOM_PERMANENTS_INACCESSIBLES . 'ecran_secu
include $f; include $f;
/* /*
* detecteur de robot d'indexation * Détecteur de robot d'indexation
* utilise en divers endroits, centralise ici si l'ecran l'a pas deja fait
*/ */
if (!defined('_IS_BOT')) if (!defined('_IS_BOT')){
define('_IS_BOT', define('_IS_BOT',
isset($_SERVER['HTTP_USER_AGENT']) isset($_SERVER['HTTP_USER_AGENT'])
AND preg_match(',bot|slurp|crawler|spider|webvac|yandex|INA dlweb|EC2LinkFinder|80legs,i', AND preg_match(
$_SERVER['HTTP_USER_AGENT']) // 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 *** // *** Parametrage par defaut de SPIP ***
@ -290,7 +294,7 @@ $liste_des_authentifications = array(
// pour specifier les versions de SPIP necessaires // pour specifier les versions de SPIP necessaires
// il faut s'en tenir a un nombre de decimales fixe // 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 // 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.21";
// version des signatures de fonctions PHP // version des signatures de fonctions PHP
// (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes) // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
$spip_version_code = 17873; $spip_version_code = 17873;

View file

@ -411,7 +411,7 @@ class IterateurDATA implements Iterator {
$a = '.sprintf($tv,'$aa').'; $a = '.sprintf($tv,'$aa').';
$b = '.sprintf($tv,'$bb').'; $b = '.sprintf($tv,'$bb').';
if ($a <> $b) if ($a <> $b)
return ($a ' . ($r[2] ? '>' : '<').' $b) ? -1 : 1;'; return ($a ' . ((isset($r[2]) and $r[2]) ? '>' : '<').' $b) ? -1 : 1;';
} }
} }
} }
@ -518,7 +518,25 @@ function inc_plugins_to_array_dist() {
* @return array * @return array
*/ */
function inc_xml_to_array_dist($u) { function inc_xml_to_array_dist($u) {
return @ObjectToArray(new SimpleXmlIterator($u)); return @XMLObjectToArray(new SimpleXmlIterator($u));
}
/**
*
* object -> tableau
*
* @param object $object The object to convert
* @return array
*
*/
function inc_object_to_array( $object ) {
if( !is_object( $object ) && !is_array( $object ) ) {
return $object;
}
if( is_object( $object ) ) {
$object = get_object_vars( $object );
}
return array_map( 'inc_object_to_array', $object );
} }
/** /**
@ -535,7 +553,7 @@ function inc_yql_to_array_dist($u) {
throw new Exception('YQL: r&#233;ponse vide ou mal form&#233;e'); throw new Exception('YQL: r&#233;ponse vide ou mal form&#233;e');
return false; return false;
} }
return (array) $w; return inc_object_to_array($w);
} }
/** /**
@ -679,7 +697,7 @@ function inc_ls_to_array_dist($u) {
* @param Object $object * @param Object $object
* @return array|bool * @return array|bool
*/ */
function ObjectToArray($object){ function XMLObjectToArray($object){
$xml_array = array(); $xml_array = array();
for( $object->rewind(); $object->valid(); $object->next() ) { for( $object->rewind(); $object->valid(); $object->next() ) {
if(array_key_exists($key = $object->key(), $xml_array)){ if(array_key_exists($key = $object->key(), $xml_array)){
@ -690,7 +708,7 @@ function ObjectToArray($object){
foreach($vars['@attributes'] as $k => $v) foreach($vars['@attributes'] as $k => $v)
$xml_array[$key][$k] = $v; $xml_array[$key][$k] = $v;
if($object->hasChildren()){ if($object->hasChildren()){
$xml_array[$key][] = ObjectToArray( $xml_array[$key][] = XMLObjectToArray(
$object->current()); $object->current());
} }
else{ else{

View file

@ -726,6 +726,7 @@ dans une couleur qui indique leur état :',
// N // N
'nouvelle_version_spip' => 'La version @version@ de SPIP est disponible', 'nouvelle_version_spip' => 'La version @version@ de SPIP est disponible',
'nouvelle_version_spip_majeure' => 'Une nouvelle version majeure @version@ est disponible',
// O // O
'onglet_contenu' => 'Contenu', 'onglet_contenu' => 'Contenu',

View file

@ -0,0 +1,895 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de http://trad.spip.net/tradlang_module/ecrire_?lang_cible=oc_ni_mis
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'activer_plugin' => 'Ativà lou plugin',
'affichage' => 'Afichage',
'aide_non_disponible' => 'Aquela partida de lajuda 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 quavè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 quavès prouvedi.',
'avis_connexion_echec_3' => '<b>N.B.</b> Soubre touplen de servidou, devès <b>demandà</b> lativacioun dóu vouòstre achès a la basa de dounada denant de la poudé utilisà. Se noun vi poudès counetà, verificàs quavè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 quavès prouvedi. ',
'avis_connexion_ldap_echec_3' => 'Dun biais alternatiéu, noun utilisàs lou supouart LDAP per impourtà dutilisaire.',
'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 dinstalacioun 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 ques lou cas de plusiur aubergadour).',
'avis_lecture_noms_bases_3' => 'En la segounda alternativa, es proubable quuna 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' => 'Louperacioun a souhit.',
'avis_operation_impossible' => 'Ouperacioun empoussibla',
'avis_suppression_base' => 'MÈFI, la supressioun dei dounada es irreversibla',
// B
'bouton_acces_ldap' => 'Ajustà lachès a LDAP',
'bouton_ajouter' => 'Ajustà',
'bouton_annuler' => 'Anulà',
'bouton_cache_activer' => 'Reativà lamagadou',
'bouton_cache_desactiver' => 'Desativà tempourariamen lamagadou',
'bouton_demande_publication' => 'Demandà la publicacioun daquel 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 à ladressa :',
'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à danounça editouriali',
'bouton_redirection' => 'REDIRECIOUN',
'bouton_relancer_installation' => 'Relançà linstalacioun',
'bouton_suivant' => 'Seguent',
'bouton_tenter_recuperation' => 'Prouvà una recuperacioun',
'bouton_test_proxy' => 'Prouvà lou proxy',
'bouton_vider_cache' => 'Vuà lamagadou',
// C
'cache_modifiable_webmestre' => 'Lou webmestre dóu sit pòu modificà aquèu paramètre.',
'calendrier_synchro' => 'Sutilisàs un lougiciau dagènda coumpatible embé <b>iCal</b>, lou poudès sincronisà embé li informacioun destou 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 dautri 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 duni 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 darticle publicat soubre dautre sit o fouòra de SPIP.',
'config_redirection' => 'Article virtual',
'config_titre_base_sup' => 'Declaracioun duna 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' => 'Nen saupre de mai',
'entree_adresse_annuaire' => 'Adressa de lanuari',
'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 », dautre còu, es laissada vuèia coumpletamen.)',
'entree_biographie' => 'Biougrafìa brèva, en quauque mot.',
'entree_chemin_acces' => '<b>Entrà</b> lou camin dachè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 laministratour dóu sistema, o de la taragnina.',
'entree_infos_perso' => 'Qu sias ?',
'entree_infos_perso_2' => 'Qu es lautour ?',
'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 daccè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 lautour',
'entree_nouveau_passe' => 'Mot de passa novèu',
'entree_passe_ldap' => 'Mot de passa',
'entree_port_annuaire' => 'Lou numerò de pouòrt de lanuari',
'entree_signature' => 'Firma',
'entree_titre_obligatoire' => '<b>Titre</b> [Oubligatori]<br />',
'entree_url' => 'Ladressa (URL) dóu vouòstre sit',
'entree_url_2' => 'Adressa (URL) dóu sit',
'erreur_connect_deja_existant' => 'Un servidou esista jà embé aqueu noum',
'erreur_email_deja_existant' => 'Aquela adressa e-mail es jà registrada.',
'erreur_nom_connect_incorrect' => 'Aqueu noum de servidou noun es autourisat',
'erreur_plugin_attribut_balise_manquant' => 'Atribut @attribut@ mancant en la balisa @balise@.',
'erreur_plugin_desinstalation_echouee' => 'La desinstalacioun dóu plugin a souhit. Mà poudès lou desativà.',
'erreur_plugin_fichier_absent' => 'Fichié assent',
'erreur_plugin_fichier_def_absent' => 'Fichié de definicioun assent',
'erreur_plugin_nom_fonction_interdit' => 'Noum de founcioun prouhibit',
'erreur_plugin_nom_manquant' => 'Noum dóu plugin mancant',
'erreur_plugin_prefix_manquant' => 'Espaci de noumage dóu plugin noun definit',
'erreur_plugin_tag_plugin_absent' => '&lt;plugin&gt; assent dóu fichié de definicioun',
'erreur_plugin_version_manquant' => 'Mìnga versioun dóu plugin',
// H
'htaccess_a_simuler' => 'Avertissamen : la counfiguracioun dóu vouòstre servidou HTTP noun ten rasoun dei fichié @htaccess@. Per poudé assegurà una bouòna segurtà, vi cóu moudificà aquela counfiguracioun soubre aqueu pounch, o que li coustanta @constantes@ (definissable en lou fichié mes_options.php) aiguon dei repertori en defouòra de @document_root@ per valour.',
'htaccess_inoperant' => 'htaccess inouperant',
// I
'ical_info1' => 'Esta pàgina presenta de metoda diferenti da restà en countat embé la vida destou sit.',
'ical_info2' => 'Per avé mai dinformacioun 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 quanounça toui lu article publicat. Lou segount counten li anounça editoriali en mai dei vouòstre darrié message privat : ves 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 dafichà simplamen, soubre toui lu vouòstre sit, lu article rechentamen publicat soubre estou sit. ',
'ical_texte_prive' => 'Estou calendari, dusage estrech personal, vinfourma de latività editoriala privada destou sit (taca e apountamen persounal, article e brèva proupausat...).',
'ical_texte_public' => 'Estou calendari vi permete de sègre latività pùblica destou sit (article e brèva publicadi).',
'ical_texte_rss' => 'Poudès sindicà li nouvità destou 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 dautre sit en utilisant un format descambi 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 lassoucià 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 larticle',
'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 ladressa:',
'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 dimage 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à unautra 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 daquel 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' => 'Lestrutura de la vouòstra basa de dounada es instalada.',
'info_bio' => 'Biougrafìa',
'info_cache_desactive' => 'Lamagadou es tempourariamen desativat.',
'info_chapeau' => 'Capèu',
'info_chapeau_2' => 'Capèu :',
'info_chemin_acces_1' => 'Oupcioun : <b>camin dachès en lanuari</b>',
'info_chemin_acces_2' => 'Devès ahura counfigurà lou camin daccès ai infourmacioun en lanuari. Aquela infourmacioun es necessari per legì lu proufiéu dutilisaire amoulounat en lanuari.',
'info_chemin_acces_annuaire' => 'Oupcioun: <b>camin daccès en lanuari</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 daccès persounal!',
'info_compatibilite_html' => 'Nourma HTML da sègre',
'info_config_suivi' => 'Saquela adressa courrespouònde a una mailing-list, poudès endicà aquì souta ladressa que lu participant au sit si pouòdon inscriéure. Aquela adressa pòu estre una URL (per isemple la pàgina dinscricioun 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 destou 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 darticle,<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 DAQUEU 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 darticle, devès au mancou creà una rùbrica.',
'info_email_envoi' => 'Adressa e-mail despedissioun (oupciounau)',
'info_email_envoi_txt' => 'Endicàs aquí ladressa da utilisà per mandà lu e-mails (en mancança, sutiliserà ladressa destinatàri couma adressa despedissioun):',
'info_email_webmestre' => 'Adressa e-mail dau webmestre',
'info_envoi_email_automatique' => 'Espedissioun de-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 latività editouriala dóu sit, SPIP vi pòu fournì per e-mail, per isemple a una mailing-list dei redatour, lanounça dei demanda de publicacioun e de validacioun darticle.',
'info_fichiers_authent' => 'Fichié dautentificacioun « .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. Duni dentre eli implicoun un prouchedimen dautentificacion especific, que
necessita davé 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. Duni dentre eli implicoun un prouchedimen dautentificacion especific, que necessita davé 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 descambià de message entre redatour, de counservà de nota de renembrança (per lou vouòstre usage persounal) o dafichà danounça sus la pàgina dacuèlh de lespaci 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 destac 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 lespaci 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' => ' soun daubergadour que desativon lespedissioun autoumatica
de-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 limage courrespoundenta.',
'info_image_process2' => 'Se minga dimage parèisse, aloura lou servidou quauberga 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' => 'Lautentificacioun 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 destre 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à lautour :',
'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 daquest 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, lanounç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à linscricioun dei visitaire dóu sit public',
'info_option_ne_pas_accepter_visiteurs' => 'Refudà linscricioun 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 darticle',
'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 lespaci privat, vourguès ativà loupcioun seguenta :',
'info_question_inscription_nouveaux_redacteurs' => 'Achetàs li inscricioun de nouvèu redatour a
partì dau sit public ? Se lachetàs, lu visitaire si pouran inscriéure
da un fourmulari autoumatisat e achederan aloura a lespaci privat per
proupausà lu sieu article pròpi.<div class="notice">Dóu tems de la fasa dinscricioun,
lu utilisaire recebon un courrié eletrounic automàticou
que li prouvedisse lu sieu code dachès au sit privat. Dunu
aubergadour desativon lespedissioun de-mails dai sieu servidou : en aqueu cas, linscricioun 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' => 'qua achès à lespaci 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à larticle 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 limpourtacioun 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 dachès en lanuari :',
'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 daquel 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 ques atribuit ai persouna presenti en lanuari 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 latività 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 lintegralità 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 secrié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 dinstalacioun 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' => 'Larticle noun a estat traduch en aquela lenga.',
'info_tout_site3' => 'Larticle a estat traduch en aquela lenga, ma si pourtet puèi de moudificacioun a larticle de referença. La traducioun déu estre atualisada.',
'info_tout_site4' => 'Larticle 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 safichon.
Li traducioun soun assouciadi a louriginau,
embé una coulou quendica 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' => 'lURL 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çà dutilisà 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' => 'Linstalacioun va proubablamen souhì, o aboutì a un sit noun founciounal...',
'install_extension_mbstring' => 'SPIP noun founciouna embé :',
'install_extension_php_obligatoire' => 'SPIP esija lestensioun 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 dinstalacioun.',
'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 dutilisà <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 desperimentacioun',
'instituer_erreur_statut_a_change' => 'Lestatut 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 davertissamen',
'item_administrateur_2' => 'aministratour',
'item_afficher_calendrier' => 'Afichà en lou calendari',
'item_autoriser_syndication_integrale' => 'Difusì lintegralità 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 lagenda',
'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 davertissamen',
'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 lagenda',
'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 larticle',
'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 dautis',
'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 lecran',
'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à lautour',
'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 darticle',
'lien_trier_statut' => 'Trià per estatut',
'lien_voir_en_ligne' => 'VEIRE EN LIGNA:',
'logo_article' => 'Logou de larticle',
'logo_auteur' => 'Logou de lautour',
'logo_rubrique' => 'Logou de la rùbrica',
'logo_site' => 'Logou destou 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à unautra 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 saplicà (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 dativà lou plugin @plugin@',
'plugin_info_automatique1' => 'Se souetàs autourisà linstalacioun autoumatic dei plugin, vourguès :',
'plugin_info_automatique1_lib' => 'Se souetàs autourisà linstalacioun autoumatic daquela 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' => 'Duni 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 linstalera 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 daqueu 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 lativà',
'plugin_zip_adresse' => 'endicàs aquì souta ladressa dun fichié zip de plugin a telecargà, o ben ladressa duna 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 linstalà.',
'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 lamagadou.',
'taille_cache_maxi' => 'SPIP prouva de limità la talha dóu repertori de lamagador destou sit a cìrca <b>@octets@</b> de dounada.',
'taille_cache_moins_de' => 'La talha de lamagadou es màncou de @octets@.',
'taille_cache_octets' => 'Ahura la talha de lamagador es cìrca de @octets@.',
'taille_cache_vide' => 'Lamagadou 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 dachès anounime. En aqueu cas, cau spechificà un identificant dachès inicial per poudé pi recercà dinformacion en lannuari. 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 laurè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 questou sit web, si trata proubablamen de « localhost ».)',
'texte_ajout_auteur' => 'Lautour seguent es estat ajustat a larticle :',
'texte_annuaire_ldap_1' => 'Savè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 lURL 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 descambià 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 duna basa de dounada.',
'texte_choix_base_3' => '<b>Chausissès</b> aquì souta aquela que lou vouòstre aubergadour va 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 dutilisà li poussibilità mai mouderni dóu <i>HTML 5</i>.',
'texte_compatibilite_html_attention' => 'Li a minga risc a ativà loupcioun <i>HTML 5>/i>, mà se lou fès, li pàgina dóu vouòstre sit deuran coumençà embé li mencioun seguent per està vàlidi : <code>&lt; !DOCTYPE html&gt;</code>.',
'texte_compte_element' => '@count@ elemen',
'texte_compte_elements' => '@count@ elemen',
'texte_conflit_edition_correction' => 'Vourguès countroulà aquì souta li diferença tra li doui versioun dóu tèstou ; poudès finda coupià li vouòstri moudificacioun, pi recoumençà.',
'texte_connexion_mysql' => 'Counsultàs li infourmacioun que lou vouòstre aubergadour fournisse : li devès troubà lou servidou de basa de dounada que proupausa e lu identificant persounal per vi counetà.',
'texte_contenu_article' => '(Countengut de larticle en quauque mot.)',
'texte_contenu_articles' => 'Segoun la maqueta que lou vouòstre sit a adoutada, poudès dechidre
que dunu 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 ses
encalada, poudès prouvà una reparacioun
autoumatica.',
'texte_creer_rubrique' => 'Denant de poudé escrieure darticles<br/>, devès creà una rùbrica.',
'texte_date_creation_article' => 'DATA DE CREACIOUN DE LARTICLE:', # 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 destre 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 lachès ai autour e aministratour en dautre luèc dóu vouòstre sit (prougrama estèrnou destatì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 larticle.)',
'texte_jeu_caractere' => 'Es counsilhat demplegà, sus lou vouòstre sit, lalfabet universal (<tt>utf-8</tt>) : permete dafichà 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 quaquò 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 lespaci 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à larticle :',
'texte_multilinguisme' => 'Se vourguès gerà douget en mai duna lenga, embé una navigacioun complessa, poudès ajustà un menù de selecioun de lenga sus aquelu ouget, en founcioun de lourganisacioun 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 qua lacoustumada. Se siès webmèstre dóu sit, vourguès escassà lou fichié @connect@ e repilhà linstalacioun per fin datualisà lu vouòstre parametre de counessioun a la basa de dounada.<p> (NB: savè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 va 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 coumacò @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 lespaci 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 unautra URL.',
'texte_requetes_echouent' => '<b>Quoura certeni requesta SQL souhon
sistematicamen e sensa rasoun aparenta, si pòu
quacò 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 lafichage, que counten bessai
dindì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 voubligia - 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 lespaci 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 lamagadou SPIP. Acò permete per isemple de fourçà un nouvèu carcul de touti li pàgina
savès fach dei moudificacioun empourtanti de grafisme o destrutura 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ì ladressa dun 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 dun 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à dafichà de message davertimen
intempestiéu.',
'texte_vide' => 'vuèi',
'texte_vider_cache' => 'Vuà lamagadou',
'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à lestat 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 lespaci 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 ledicioun',
'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 larticle',
'titre_langue_rubrique' => 'Lenga de la rùbrica',
'titre_langue_trad_article' => 'LENGA E TRADUCIOUN DE LARTICLE',
'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 daquel article :',
'trad_delier' => 'Pus legà aquest article ai traducioun sieui',
'trad_lier' => 'Aquel article es una traducioun de larticle 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:'
);
?>

View file

@ -0,0 +1,121 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de http://trad.spip.net/tradlang_module/public?lang_cible=hr
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'accueil_site' => 'Početna stranica',
'article' => 'Članak',
'articles' => 'Članci',
'articles_auteur' => 'Članci ovoga autora',
'articles_populaires' => 'Najpopularniji članci',
'articles_rubrique' => 'Članci u ovoj rubrici',
'aucun_article' => 'Na ovoj adresi ne postoji nijedan članak.',
'aucun_auteur' => 'Na ovoj adresi ne postoji nijedan autor.',
'aucun_site' => 'Na ovoj adresi ne postoji nijedna web stranica.',
'aucune_breve' => 'Na ovoj adresi ne postoji nijedna vijest.',
'aucune_rubrique' => 'Na ovoj adresi ne postoji nijedna rubrika.',
'auteur' => 'Autor',
'autres' => 'Ostale',
'autres_breves' => 'Ostale vijesti',
'autres_groupes_mots_clefs' => 'Ostale grupe ključnih riječi',
'autres_sites' => 'Ostale web stranice',
// B
'bonjour' => 'Dobar dan',
// C
'commenter_site' => 'Komentirati web stranice',
'contact' => 'Kontakt',
'copie_document_impossible' => 'Nemoguće kopirati dokument',
// D
'date' => 'Datum',
'dernier_ajout' => 'Posljednji upis',
'dernieres_breves' => 'Posljednje vijesti',
'derniers_articles' => 'Posljednji članci',
'derniers_commentaires' => 'Posljednji komentari',
'derniers_messages_forum' => 'Posljednji forumski prilozi',
// E
'edition_mode_texte' => 'Mijenjati tekst',
'en_reponse' => 'Odgovor na:',
'en_resume' => 'Kratak sadržaj',
'envoyer_message' => 'Poslati poruku',
'espace_prive' => 'Redakcija',
// F
'formats_acceptes' => 'Prihvaćen format : @format@.',
// H
'hierarchie_site' => 'Hijerarhija web stranica',
// J
'jours' => 'Dani',
// L
'lien_connecter' => 'Priključiti se',
// M
'meme_auteur' => 'Od istog autora',
'meme_rubrique' => 'U istoj rubrici',
'memes_auteurs' => 'Od istih autora',
'message' => 'Poruka',
'messages_forum' => 'Poruka na forumu',
'messages_recents' => 'Nove poruke na forumu',
'mots_clef' => 'Ključna riječ',
'mots_clefs' => 'Ključne riječi',
'mots_clefs_meme_groupe' => 'Ključne riječi u istoj grupi',
// N
'navigation' => 'Navigacija',
'nom' => 'Ime',
'nouveautes' => 'Novosti',
'nouveautes_web' => 'Novo u internetu (WWW)',
'nouveaux_articles' => 'Novi članci',
'nouvelles_breves' => 'Nove vijesti',
// P
'page_precedente' => 'prethodna stranica',
'page_suivante' => 'slijedeća stranica',
'par_auteur' => 'od autora ',
'participer_site' => 'I Vi možete surađivati na uređenju naših stranica. Dovoljno je da unesete Vašu mail adresu. Nakon toga ćete primiti mail sa podacima koji će Vam omogućiti pristup redakcijskom sistemu.',
'plan_site' => 'Mapa weba',
'popularite' => 'Popularnost',
'poster_message' => 'Objaviti poruku',
'proposer_site' => 'U ovoj rubrici možete predložiti jednu novu stranicu :',
// R
'repondre_article' => 'Odgovoriti na ovaj članak',
'repondre_breve' => 'Odgovoriti na ovu vijest',
'resultats_recherche' => 'Rezultati pretrage',
'retour_debut_forums' => 'Natrag na početak foruma',
'rubrique' => 'Rubrika',
'rubriques' => 'Rubrike',
// S
'signatures_petition' => 'Potpis',
'site_realise_avec_spip' => 'Ostvareno uz pomoć SPIP',
'sites_web' => 'Web stranice',
'sous_rubriques' => 'Podrubrike',
'spam' => 'Spam',
'suite' => 'dalje',
'sur_web' => 'u internetu (WWW)',
'syndiquer_rubrique' => 'Aktivirati RSS za ovu rubriku',
'syndiquer_site' => 'Aktivirati RSS za cijeli web',
// T
'texte_lettre_information' => 'Ovo je poruka sa novostima s web stranica',
'texte_lettre_information_2' => 'Ovaj mail sadrži pregled novosti poslije:',
// V
'ver_imprimer' => 'Verzija za tiskanje',
'voir_en_ligne' => 'Vidjeti on-line',
'voir_squelette' => 'Pogledati kostur ovih stranica'
);
?>

View file

@ -0,0 +1,121 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de http://trad.spip.net/tradlang_module/public?lang_cible=oc_ni_mis
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'accueil_site' => 'Acuèlh',
'article' => 'Article',
'articles' => 'Article',
'articles_auteur' => 'Article daquel autour',
'articles_populaires' => 'Lu article lu mai poupulari',
'articles_rubrique' => 'Article daquela rùbrica',
'aucun_article' => 'Lì es mìnga darticle en aquela adressa',
'aucun_auteur' => 'Lì es mìnga dautour 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 destou sit e proupausà lu vouòstre article en vinscrivant aquì souta. Receverès un e-mail que vendiquerà lu vouòstre code dachès a lespaci 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 dinformacioun dóu sit',
'texte_lettre_information_2' => 'Aquela letra fa lou chensimen dei nouvità publicadi despì',
// V
'ver_imprimer' => 'Versioun destampà',
'voir_en_ligne' => 'Veire en ligna',
'voir_squelette' => 'Veire lesquelètrou daquela pàgina'
);
?>

View file

@ -675,6 +675,7 @@ et vous reconnecter au site.
'titre_titre_document' => 'Titre du document :', 'titre_titre_document' => 'Titre du document :',
'todo' => 'à venir', 'todo' => 'à venir',
'trad_reference' => '(référence des traductions)', 'trad_reference' => '(référence des traductions)',
'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
// Z // Z
'zbug_balise_b_aval' => ' : balise B en aval', 'zbug_balise_b_aval' => ' : balise B en aval',

View file

@ -0,0 +1,719 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de http://trad.spip.net/tradlang_module/spip?lang_cible=hr
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// 0
'0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-dev',
'0_langue' => 'Hrvatski [hr]',
'0_liste' => 'spip-dev@rezo.net',
'0_mainteneur' => 'Alexander Gehrecke (a_gehrecke(at)ambinet.de)',
// A
'access_interface_graphique' => 'Natrag u potpuni grafički interface',
'access_mode_texte' => 'Pojednostavljeni text interface',
'admin_debug' => 'debug',
'admin_modifier_article' => 'Izmijeniti ovaj članak',
'admin_modifier_auteur' => 'Izmjeniti podatke ovoga autora',
'admin_modifier_breve' => 'Izmjeniti ovu vijest',
'admin_modifier_mot' => 'Izmjeniti ovu ključnu riječ',
'admin_modifier_rubrique' => 'Izmjeniti ovu rubriku',
'admin_recalculer' => 'Osvježiti ovu stranicu',
'afficher_calendrier' => 'Prikazati kalendar',
'afficher_trad' => 'pokaži prijevode',
'alerte_maj_impossible' => '<b>Pozor!</b> Neuspjeo pokušaj promjene verzije SQL baze podataka u verziju @version@, moguće uslijed nedostatnih prava. Molimo stupite u kontakt s Vašim ISP.',
'alerte_modif_info_concourante' => 'UPOZORENJE : Ova informacija je drugdje već promjenjena. Trenutna vrijednost je :',
'analyse_xml' => 'XML analiza',
'annuler' => 'Poništiti',
'antispam_champ_vide' => 'Molim ostavite ovo polje prazno:',
'articles_recents' => 'Najnoviji članci',
'avis_archive_incorrect' => 'datoteka (arhiva) nije ispravna SPIP datoteka',
'avis_archive_invalide' => 'datoteka (arhiva) nije ispravna',
'avis_attention' => 'POZOR!',
'avis_champ_incorrect_type_objet' => 'Nevaljan naziv polja @name@ za objekt vrste @type@',
'avis_colonne_inexistante' => 'Kolona @col@ ne postoji',
'avis_erreur' => 'Greška: vidi dolje',
'avis_erreur_connexion' => 'Greška pri priključivanju',
'avis_erreur_cookie' => 'problem sa cookiem',
'avis_erreur_fonction_contexte' => 'Programska greška. Ova funkcija ne smije biti pozvana u ovom kontekstu.',
'avis_erreur_mysql' => 'SQL greška',
'avis_erreur_sauvegarde' => 'Greška u sigurnosnoj kopiji (backup) (@type@ @id_objet@)!',
'avis_erreur_visiteur' => 'Problem pri ulasku u privatnu dio',
// B
'barre_a_accent_grave' => 'Umetnite veliko A sa silaznim akcentom',
'barre_aide' => 'Upotrijebite tipografske kratice da biste oplemenili izgled',
'barre_e_accent_aigu' => 'Umetnite veliko E s uzlaznim akcentom',
'barre_eo' => 'Umetnite oe-ligaturu',
'barre_eo_maj' => 'Umetnite veliku OE-ligaturu',
'barre_euro' => 'Umetnite € simbol',
'barre_gras' => 'koristite {{debelo otisnuta slova}}',
'barre_guillemets' => 'umetnite u "dvostruke navodnike"',
'barre_guillemets_simples' => 'umetnite u jednostruke navodnike',
'barre_intertitre' => 'promijenite u {{{podnaslov}}}',
'barre_italic' => 'koristite {kurziv}',
'barre_lien' => 'promjenite u [hiperlink->http://...]',
'barre_lien_input' => 'Unesite cilj hiperlinka (možete unijeti internet URL u obliku http://www.mysite.com ili jednostavno broj članka na ovim web stranicama).',
'barre_note' => 'Promjenite u [[napomenu]]',
'barre_paragraphe' => 'Napraviti paragraf',
'barre_quote' => '<quote>citirajte poruku</quote>',
'bouton_changer' => 'Izmjeniti',
'bouton_chercher' => 'Tražiti',
'bouton_choisir' => 'Birati',
'bouton_deplacer' => 'Premjestiti',
'bouton_download' => 'Preuzimanje',
'bouton_enregistrer' => 'Sačuvati',
'bouton_radio_desactiver_messagerie_interne' => 'Deaktivirati interne poruke',
'bouton_radio_envoi_annonces' => 'Poslati autorske objave',
'bouton_radio_non_envoi_annonces' => 'Ne slati nikakve objave',
'bouton_radio_non_envoi_liste_nouveautes' => 'Ne slati listu posljednjih vijesti',
'bouton_recharger_page' => 'osvježiti ovu stranicu',
'bouton_telecharger' => 'Otprema',
'bouton_upload' => 'uploadati',
'bouton_valider' => 'Potvrditi',
// C
'cal_apresmidi' => 'poslijepodne (p.m.)',
'cal_jour_entier' => 'cijeli dan',
'cal_matin' => 'prijepodne (a.m.)',
'cal_par_jour' => 'dnevni kalendar',
'cal_par_mois' => 'mjesečni kalendar',
'cal_par_semaine' => 'tjedni kalendar',
'choix_couleur_interface' => 'boja',
'choix_interface' => 'izbor sučelja',
'colonne' => 'Stupac',
'confirm_changer_statut' => 'Potrebna potvrda: Odabrali ste promjenu statusa ovoga članka. Želite li nastaviti?',
'correcte' => 'ispravno',
// D
'date_aujourdhui' => 'danas',
'date_avant_jc' => 'p.n.e.',
'date_dans' => 'u @delai@',
'date_de_mois_1' => '@j@ siječnja',
'date_de_mois_10' => '@j@ listopada',
'date_de_mois_11' => '@j@ studenog',
'date_de_mois_12' => '@j@ prosinca',
'date_de_mois_2' => '@j@ veljače',
'date_de_mois_3' => '@j@ ožujka',
'date_de_mois_4' => '@j@ travnja',
'date_de_mois_5' => '@j@ svibnja',
'date_de_mois_6' => '@j@ lipnja',
'date_de_mois_7' => '@j@ srpnja',
'date_de_mois_8' => '@j@ kolovoza',
'date_de_mois_9' => '@j@ rujna',
'date_demain' => 'sutra',
'date_fmt_heures_minutes' => '@h@:@m@',
'date_fmt_heures_minutes_court' => '@h@h@m@',
'date_fmt_jour' => '@nomjour@ @jour@',
'date_fmt_jour_heure' => '@jour@ u @heure@',
'date_fmt_jour_heure_debut_fin' => '@jour@ od @heure_debut@ do @heure_fin@', # MODIF
'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ od @heure_debut@@dtabbr@ do @dtend@@heure_fin@@dtabbr@', # MODIF
'date_fmt_jour_mois' => '@jourmois@',
'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
'date_fmt_mois_annee' => '@nommois@ @annee@',
'date_fmt_nomjour' => '@nomjour@ @date@',
'date_fmt_nomjour_date' => '@nomjour@, @date@',
'date_fmt_periode' => 'Od @date_debut@ do @date_fin@',
'date_fmt_periode_abbr' => 'Od @dtart@@date_debut@@dtabbr@ do @dtend@@date_fin@@dtabbr@',
'date_fmt_periode_from' => 'Od',
'date_fmt_periode_to' => 'do',
'date_fmt_saison_annee' => '@saison@ @annee@',
'date_heures' => 'sati',
'date_hier' => 'jučer',
'date_il_y_a' => 'prije @delai@',
'date_jnum1' => '1.',
'date_jnum10' => '10.',
'date_jnum11' => '11.',
'date_jnum12' => '12.',
'date_jnum13' => '13.',
'date_jnum14' => '14.',
'date_jnum15' => '15.',
'date_jnum16' => '16.',
'date_jnum17' => '17.',
'date_jnum18' => '18.',
'date_jnum19' => '19.',
'date_jnum2' => '2.',
'date_jnum20' => '20.',
'date_jnum21' => '21.',
'date_jnum22' => '22.',
'date_jnum23' => '23.',
'date_jnum24' => '24.',
'date_jnum25' => '25.',
'date_jnum26' => '26.',
'date_jnum27' => '27.',
'date_jnum28' => '28.',
'date_jnum29' => '29.',
'date_jnum3' => '3.',
'date_jnum30' => '30.',
'date_jnum31' => '31.',
'date_jnum4' => '4.',
'date_jnum5' => '5.',
'date_jnum6' => '6.',
'date_jnum7' => '7.',
'date_jnum8' => '8.',
'date_jnum9' => '9.',
'date_jour_1' => 'Nedjelja',
'date_jour_1_abbr' => 'ne.',
'date_jour_1_initiale' => 'n.',
'date_jour_2' => 'Ponedjeljak',
'date_jour_2_abbr' => 'pon.',
'date_jour_2_initiale' => 'p.',
'date_jour_3' => 'Utorak',
'date_jour_3_abbr' => 'uto.',
'date_jour_3_initiale' => 'u.',
'date_jour_4' => 'Srijeda',
'date_jour_4_abbr' => 'sri.',
'date_jour_4_initiale' => 's.',
'date_jour_5' => 'Četvrtak',
'date_jour_5_abbr' => 'čet.',
'date_jour_5_initiale' => 'č.',
'date_jour_6' => 'Petak',
'date_jour_6_abbr' => 'pe.',
'date_jour_6_initiale' => 'p.',
'date_jour_7' => 'Subota',
'date_jour_7_abbr' => 'sub.',
'date_jour_7_initiale' => 's.',
'date_jours' => 'dana',
'date_minutes' => 'minuta',
'date_mois' => 'mjeseci',
'date_mois_1' => 'Sječanj',
'date_mois_10' => 'Listopad',
'date_mois_10_abbr' => 'list.',
'date_mois_11' => 'Studeni',
'date_mois_11_abbr' => 'stud.',
'date_mois_12' => 'Prosinac',
'date_mois_12_abbr' => 'pros.',
'date_mois_1_abbr' => 'sije.',
'date_mois_2' => 'Veljača',
'date_mois_2_abbr' => 'velj.',
'date_mois_3' => 'Ožujak',
'date_mois_3_abbr' => 'ožuj.',
'date_mois_4' => 'Travanj',
'date_mois_4_abbr' => 'trav.',
'date_mois_5' => 'Svibanj',
'date_mois_5_abbr' => 'svib.',
'date_mois_6' => 'Lipanj',
'date_mois_6_abbr' => 'lip.',
'date_mois_7' => 'Srpanj',
'date_mois_7_abbr' => 'srp.',
'date_mois_8' => 'Kolovoz',
'date_mois_8_abbr' => 'kolov.',
'date_mois_9' => 'Rujan',
'date_mois_9_abbr' => 'ruj.',
'date_saison_1' => 'zima',
'date_saison_2' => 'proljeće',
'date_saison_3' => 'ljeto',
'date_saison_4' => 'jesen',
'date_secondes' => 'sekunde',
'date_semaines' => 'tjedana',
'date_un_mois' => 'mjesec',
'date_une_heure' => 'sat',
'date_une_minute' => 'minuta',
'date_une_seconde' => 'sekundi',
'date_une_semaine' => 'tjedana',
'dirs_commencer' => ' da biste doista započeli instalaciju',
'dirs_preliminaire' => 'Priprema: <b>podešavanje dozvole pristupa</b>',
'dirs_probleme_droits' => 'Problem sa dozvolama pristupa',
'dirs_repertoires_absents' => '<p><b>Slijedeći direktoriji nisu nađeni: </b></p><ul>@bad_dirs@.</ul>
<p>Mogući uzrok može biti greška u pisanju malih / velikih slova.
Uvjerite se da su mala i velika slova ovih direktorija istovjetna sa gore prikazanim imenima. Ako to nije slučaj, promijenite nazive direktorija koristeći Vaš FTP program.</p>
<p>Kada to napravite, onda možete',
'dirs_repertoires_suivants' => '<p><b>U slijedeće direktorije nije moguće pisati: </b></p><ul>@bad_dirs@</ul>
<p>Da biste to promijenili, upotrijebite Vaš FTP program i promijenite dozvole pristupa za svaki od navedenih direktorija. Ovo je detaljno objašnjeno u uputi za instalaciju.</p>
<p>Kada to napravite, onda možete ',
'double_occurrence' => 'Dvije instance',
// E
'en_cours' => 'obrada',
'envoi_via_le_site' => 'Poslati preko web stranica',
'erreur' => 'Greška',
'erreur_balise_non_fermee' => 'poslednja oznaka nije zatvorena:',
'erreur_technique_ajaxform' => 'Ops. Neočekivana greška onemogućila je slanje formulara. Možete ponovno pokušati.',
'erreur_technique_enregistrement_champs' => 'Tehnička pogreška onemogućila je uredno pohranjivanje polja @champs@.',
'erreur_technique_enregistrement_impossible' => 'Tehnička pogreška onemogućila je uredno pohranjivanje.',
'erreur_texte' => 'greška/greške',
'etape' => 'Stupanj',
// F
'fichier_introuvable' => 'Datoteka nije pronađena: @fichier@',
'form_auteur_confirmation' => 'Potvrdite mail adresu',
'form_auteur_email_modifie' => 'Vaša mail adresa je promjenjena.',
'form_auteur_envoi_mail_confirmation' => 'Potvrda je upravo poslana putem elektroničke pošte na @email@. Otvorite navedenu web adresu iz poruke kako biste potvrdili potvrdili vašu mail adresu.',
'form_auteur_mail_confirmation' => 'Dobar dan,
Zatražili ste izmjenu vaše mail adrese.
Kako biste potvrdili svoju novu adresu, potrebno je samo pristupiti niže navedenoj adresi
(u protivnom će vaš upit biti zanemaren) :
@url@
',
'form_deja_inscrit' => 'Već ste se registrirali.',
'form_email_non_valide' => 'Vaša mail adresa je neispravna.',
'form_forum_access_refuse' => 'Više nemate pristupa ovime web stranicama.',
'form_forum_bonjour' => 'Dobar dan @nom@,',
'form_forum_confirmer_email' => 'Kako biste potvrdili vašu mail adresu, pođite na slijedeću adresu : @url_confirm@',
'form_forum_email_deja_enregistre' => 'Ova mail adresa je već registrirana, stoga možete koristiti Vašu uobičajenu lozinku.',
'form_forum_identifiant_mail' => 'Vaši novi podaci su vam upravo poslani na Vašu mail adresu.',
'form_forum_identifiants' => 'Osobni podaci',
'form_forum_indiquer_nom_email' => 'Unesite ovdje Vaše ime i mail adresu. Ubrzo ćete primiti mail sa Vašim osobnim podacima.',
'form_forum_login' => 'login:',
'form_forum_message_auto' => '(ovo je automatska poruka)',
'form_forum_pass' => 'lozinka:',
'form_forum_probleme_mail' => 'Problem sa mailom: lozinka Vam nije mogla biti poslana.',
'form_forum_voici1' => 'Ovdje su Vaši osobni podaci za pristup web stranicama
"@nom_site_spip@" (@adresse_site@):',
'form_forum_voici2' => 'Ovdje su Vaši osobni podaci za pisanje članaka na web stranicama
"@nom_site_spip@" (@adresse_login@):',
'form_indiquer_email' => 'Unesite Vašu mail adresu.',
'form_indiquer_nom' => 'Unesite Vaše ime.',
'form_indiquer_nom_site' => 'Unesite ime Vaših web stranica.',
'form_pet_deja_enregistre' => 'Ove web stranice su već registrirane',
'form_pet_signature_pasprise' => 'Vaš potpis je ignoriran.',
'form_prop_confirmer_envoi' => 'Potvrditi odašiljanje',
'form_prop_description' => 'opis / komentar',
'form_prop_enregistre' => 'Vaš prijedlog je upamćen, i bit će objavljen nakon što ga provjeri administrator ovih web stranica.',
'form_prop_envoyer' => 'poslati poruku',
'form_prop_indiquer_email' => 'Unesite ispravnu mail adresu',
'form_prop_indiquer_nom_site' => 'Unesite ime web stranica.',
'form_prop_indiquer_sujet' => 'Unesite temu',
'form_prop_message_envoye' => 'Poruka poslana',
'form_prop_non_enregistre' => 'Vaš prijedlog nije upamćen.',
'form_prop_sujet' => 'Tema',
'form_prop_url_site' => 'URL web stranica',
'forum_non_inscrit' => 'Ili još niste registrirani ili je adresa ili lozinka netočna.',
'forum_par_auteur' => '- @auteur@',
'forum_titre_erreur' => 'Greška...',
// I
'ical_texte_rss_articles' => 'Adresa "backend"-datoteke sa člancima ovih web stranica je:',
'ical_texte_rss_articles2' => 'Također, možete pristupiti "backend"-datotekama sa člancima pojedinačnih rubrika ovih web stranica:',
'ical_texte_rss_breves' => 'Osim toga, tu je i datoteka koja sadrži vijesti ovih web stranica. Odabiranjem rubrike ćete dobiti samo vijesti iz te rubrike.',
'icone_a_suivre' => 'aktivnosti',
'icone_admin_site' => 'administriranje stranica',
'icone_agenda' => 'kalendar',
'icone_aide_ligne' => 'pomoć',
'icone_articles' => 'članci',
'icone_auteurs' => 'autori',
'icone_brouteur' => 'brzi pregled',
'icone_configuration_site' => 'konfiguracija',
'icone_configurer_site' => 'konfigurirajte Vaše stranice',
'icone_creer_nouvel_auteur' => 'dodati novog autora',
'icone_creer_rubrique' => 'dodati novu rubriku',
'icone_creer_sous_rubrique' => 'dodati novu podrubriku',
'icone_deconnecter' => 'odjava',
'icone_discussions' => 'diskusije',
'icone_doc_rubrique' => 'pridruženi dokumenti',
'icone_ecrire_article' => 'napisati novi članak',
'icone_edition_site' => 'uređivanje stranica',
'icone_gestion_langues' => 'podešavanje jezika',
'icone_informations_personnelles' => 'osobni podaci',
'icone_interface_complet' => 'potpuni interface',
'icone_interface_simple' => 'pojednostavljeni interface',
'icone_maintenance_site' => 'održavanje web stranica',
'icone_messagerie_personnelle' => 'osobne poruke',
'icone_repartition_debut' => 'prikazati raspodjelu od početka',
'icone_rubriques' => 'rubrike',
'icone_sauver_site' => 'sigurnosna kopija web stranica',
'icone_site_entier' => 'sve web stranice',
'icone_sites_references' => 'preporučene web stranice',
'icone_statistiques' => 'statistika web stranica',
'icone_suivi_activite' => 'praćenje aktivnosti na web stranicama',
'icone_suivi_actualite' => 'statistika web stranica',
'icone_suivi_pettions' => 'upravljanje peticijama',
'icone_suivi_revisions' => 'revizije članaka',
'icone_supprimer_document' => 'obrisati ovaj dokument',
'icone_supprimer_image' => 'obrisati ovu sliku',
'icone_tous_articles' => 'svi Vaši članci',
'icone_tous_auteur' => 'svi autori',
'icone_tous_visiteur' => 'Svi posjetitelji',
'icone_visiter_site' => 'posjetiti web stranice',
'icone_voir_en_ligne' => 'promatrati on-line',
'img_indisponible' => 'slika nije na raspolaganju',
'impossible' => 'nije moguće',
'info_a_suivre' => 'AKTIVNOSTI»',
'info_acces_interdit' => 'pristup zabranjen',
'info_acces_refuse' => 'pristup odrečen',
'info_action' => 'aktivnost: @action@',
'info_administrer_rubriques' => 'Možete obrađivati ovu rubriku i njene podrubrike',
'info_adresse_non_indiquee' => 'Niste odredili adresu za testiranje!',
'info_aide' => 'POMOĆ:',
'info_ajouter_mot' => 'dodati ovu ključnu riječ',
'info_annonce' => 'OBJAVA',
'info_annonces_generales' => 'opće objave:',
'info_article_propose' => 'predložen članak',
'info_article_publie' => 'objavljen članak',
'info_article_redaction' => 'članak u obradi',
'info_article_refuse' => 'odbačen članak',
'info_article_supprime' => 'obrisan članak',
'info_articles' => 'članci',
'info_articles_a_valider' => 'članci za provjeru',
'info_articles_nb' => '@nb@ articles',
'info_articles_proposes' => 'podnešeni članci',
'info_articles_un' => '1 članak',
'info_auteurs_nombre' => 'autor(i):',
'info_authentification_ftp' => 'provjera identiteta (kroz FTP).',
'info_breves_2' => 'vijesti',
'info_breves_nb' => '@nb@ kratke vijesti',
'info_breves_un' => '1 kratke vijesti',
'info_connexion_refusee' => 'priključenje odbijeno',
'info_contact_developpeur' => 'Stupite u vezu s programerom.',
'info_contenance' => 'Ove stranice sadrže:',
'info_contribution' => 'forumski prilozi',
'info_copyright' => '@spip@ je besplatan softver u smislu @lien_gpl@.',
'info_copyright_doc' => 'Za daljnje informacije, vidi <a href="@spipnet@">http://www.spip.net</a>.',
'info_copyright_gpl' => 'GPL dozvole',
'info_cours_edition' => 'Vaši članci u obradi',
'info_creer_repertoire' => 'Napravite datoteku ili direktorij sa imenom:',
'info_creer_repertoire_2' => 'u poddirektoriju <b>@repertoire@</b>, i onda',
'info_creer_vignette' => 'automatska izrada male sličice',
'info_creerdansrubrique_non_autorise' => 'Nemate dovoljne ovlasti kako biste dodali sadržaj u ovu rubriku',
'info_deplier' => 'otvoriti',
'info_descriptif_nombre' => 'opis(i):',
'info_description' => 'opis:',
'info_description_2' => 'opis:',
'info_dimension' => 'veličina:',
'info_documents_nb' => '@nb@ dokumenti',
'info_documents_un' => '1 dokument',
'info_ecire_message_prive' => 'napisati privatnu poruku',
'info_email_invalide' => 'nepostojeća mail adresa.',
'info_en_cours_validation' => 'Vaši članci u obradi',
'info_en_ligne' => 'trenutačno on-line (priključeni):',
'info_envoyer_message_prive' => 'poslati privatnu poruku ovom autoru',
'info_erreur_requete' => 'greška u zahtjevu:',
'info_erreur_squelette2' => 'predložak <b>@fichier@</b> ne stoji na raspolaganju...',
'info_erreur_systeme' => 'greška u sistemu (broj @errsys@)',
'info_erreur_systeme2' => 'Disk je pun ili je baza podataka oštećena. <br />
<span style="color:red;">pokušajte <a href=\'@script@\'>popraviti bazu podataka</a>, ili stupite u vezu sa Vašim pružateljem usluga.</span>',
'info_fini' => 'učinjeno!',
'info_format_image' => 'format za stvaranje malih sličica: @gd_formats@.',
'info_format_non_defini' => 'nejasan format',
'info_grand_ecran' => 'veliki ekran',
'info_image_aide' => 'POMOĆ',
'info_image_process_titre' => 'kako izraditi male sličice',
'info_impossible_lire_page' => '<b>Greška!</b> Stranica <tt><html>@test_proxy@</html></tt> nije mogla biti pročitana preko proxy - računala',
'info_installation_systeme_publication' => 'instalacija redakcijskog sistema...',
'info_installer_documents' => 'Možete automatski instalirati sve dokumente koji se nalaze u direktoriju @upload@.',
'info_installer_ftp' => 'Kao administrator, možete (pomoću FTP) snimiti datoteke u direktorij @upload@, da biste ih poslije ovdje birali.',
'info_installer_images' => 'Možete instalirati slike u formatima JPEG, GIF ili PNG.',
'info_installer_images_dossier' => 'Snimite slike u direktorij @upload@ da bi ste ih poslije ovdje mogli odabrati.',
'info_interface_complete' => 'cjelokupni interface',
'info_interface_simple' => 'pojednostavljeni interface',
'info_joindre_document_article' => 'Vašem članku možete pridružiti dokumente tipova',
'info_joindre_document_rubrique' => 'Ovoj rubrici možete pridružiti dokumente tipova',
'info_joindre_documents_article' => 'Vašem članku možete pridružiti dokumente tipova:',
'info_l_article' => 'članak',
'info_la_breve' => 'vijest',
'info_la_rubrique' => 'rubrika',
'info_langue_principale' => 'glavni jezik web stranica',
'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ točaka',
'info_les_auteurs_1' => '- @les_auteurs@',
'info_logo_format_interdit' => 'Dozvoljeni su samo logotipovi formata @formats@.',
'info_logo_max_poids' => 'Veličina logotipa smije biti najviše @maxi@ (ova datoteka je veličine @actuel@).',
'info_mail_fournisseur' => 'vašeime@poslužitelj.hr',
'info_message_2' => 'PORUKA',
'info_message_supprime' => 'PORUKA OBRISANA',
'info_messages_nb' => '@nb@ poruka',
'info_messages_un' => '1 poruka',
'info_mise_en_ligne' => 'datum objavljivanja:',
'info_modification_parametres_securite' => 'promjena sigurnosnih parametara',
'info_mois_courant' => 'tjekom mjeseca:',
'info_mot_cle_ajoute' => 'slijedeća ključna riječ je pridodana',
'info_multi_herit' => 'uobičajeni jezik',
'info_multi_langues_soulignees' => '<u>Podvučeni jezici</u> sadrže potpun prijevod svih djelova sučelja. Odaberete li jedan od tih jezika, mnogi dijelovi javnog dijela weba će biti pisani tim jezikom (datumi, obrasci). Pri odabiru jezika koji nisu podvučeni će ti dijelovi biti pisani na glavnom jeziku weba.',
'info_multilinguisme' => 'višejezično',
'info_nom_non_utilisateurs_connectes' => 'Vaše ime se ne pojavljuje u listi spojenih korisnika.',
'info_nom_utilisateurs_connectes' => 'Vaše ime se pojavljuje u listi spojenih korisnika.',
'info_nombre_en_ligne' => 'trenutačno spojeni korisnici:',
'info_non_resultat' => 'nema rezultata za "@cherche_mot@"',
'info_non_utilisation_messagerie' => 'Vi ne koristite interne poruke na ovim web stranicama.',
'info_nouveau_message' => 'IMATE NOVU PORUKU',
'info_nouveaux_messages' => 'IMATE @total_messages@ NOVIH PORUKA',
'info_numero_abbreviation' => 'ne',
'info_obligatoire' => 'Ova informacija je neophodna',
'info_pense_bete' => 'BILJEŠKA',
'info_petit_ecran' => 'mali ekran',
'info_petition_close' => 'Peticija zatvorena',
'info_pixels' => 'točke',
'info_plusieurs_mots_trouves' => 'nekoliko ključnih riječi je pronađeno za "@cherche_mot@":',
'info_portfolio_automatique' => 'automatska mapa:',
'info_premier_resultat' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
'info_premier_resultat_sur' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
'info_propose_1' => '[@nom_site_spip@] predloženo od: @titre@',
'info_propose_2' => 'predložen članak
-----------------',
'info_propose_3' => 'članak "@titre@" je podnešen za objavljivanje.',
'info_propose_4' => 'pozvani ste pregledati ga i dati Vaše mišljenje',
'info_propose_5' => 'u odgovarajućem forumu. Nalazi se na adresi:',
'info_publie_01' => 'Članak "@titre@" je odobren od @connect_nom@.',
'info_publie_1' => '[@nom_site_spip@] OBJAVLJENO: @titre@',
'info_publie_2' => 'članak objavljen
-----------------',
'info_rechercher' => 'pretraga',
'info_rechercher_02' => 'pretraga:',
'info_remplacer_vignette' => 'Zamjenite standardnu sličicu sa Vašim logotipom:',
'info_rubriques_nb' => '@nb@ rubrike',
'info_rubriques_un' => '1 rubrika',
'info_sans_titre_2' => 'bez naslova',
'info_selectionner_fichier' => 'možete odabrati datoteku iz direktorija @upload@',
'info_selectionner_fichier_2' => 'odaberite datoteku:',
'info_sites_nb' => '@nb@ web stranica',
'info_sites_un' => '1 web stranica',
'info_supprimer_vignette' => 'obrisati sličicu',
'info_symbole_bleu' => 'Simbol <b>plave boje</b> označava <b>bilješku</b>: tojest poruku za Vašu osobnu upotrebu.',
'info_symbole_jaune' => 'Simbol <b>žute boje</b> označava <b>objavu svim autorima</b>: mogu je mijenjati svi administratori, a vidljiva je za sve autore.',
'info_symbole_vert' => 'Simbol <b>zelene boje</b> označava <b>poruke razmjenjene sa drugim korisnicima</b> web sajta.',
'info_telecharger_nouveau_logo' => 'otpremiti novi logotip:',
'info_telecharger_ordinateur' => 'otpremiti sa Vašeg računala:',
'info_tous_resultats_enregistres' => '[svi rezultati su obuhvaćeni]',
'info_tout_afficher' => 'pokazati sve',
'info_travaux_texte' => 'Ove web stranice još nisu postavljene. Posjetite nas nešto kasnije...',
'info_travaux_titre' => 'web stranice u izgradnji',
'info_trop_resultat' => 'previše rezultata za "@cherche_mot@"; molimo preciznije podatke.',
'info_utilisation_messagerie_interne' => 'Vi koristite interne poruke na ovom sajtu.',
'info_valider_lien' => 'odobriti ovaj link',
'info_verifier_image' => ', molimo provjerite da li su Vaše slike uspješno prenešene.',
'info_vignette_defaut' => 'standardna sličica',
'info_vignette_personnalisee' => 'prilagođena sličica',
'info_visite' => 'posjeta:',
'info_vos_rendez_vous' => 'Vaše zakazane obveze',
'infos_vos_pense_bete' => 'Vaše bilješke',
// L
'label_ajout_id_rapide' => 'Brzo dodavanje',
'label_poids_fichier' => 'Veličina',
'lien_afficher_icones_seuls' => 'prikazati samo sličice',
'lien_afficher_texte_icones' => 'prikazati sličice i tekst',
'lien_afficher_texte_seul' => 'prikazati samo tekst',
'lien_liberer' => 'odobriti',
'lien_liberer_tous' => 'odobriti ove članke',
'lien_nouvea_pense_bete' => 'NOVA BILJEŠKA',
'lien_nouveau_message' => 'NOVA PORUKA',
'lien_nouvelle_annonce' => 'NOVA OBJAVA',
'lien_petitions' => 'PETICIJA',
'lien_popularite' => 'popularnost: @popularite@%',
'lien_racine_site' => 'KORIJEN WEBA',
'lien_reessayer' => 'pokušati ponovo',
'lien_repondre_message' => 'odgovoriti na ovu poruku',
'lien_supprimer' => 'obrisati',
'lien_tout_afficher' => 'pokazati sve',
'lien_visite_site' => 'posjetiti ove web stranice',
'lien_visites' => '@visites@ posjeta',
'lien_voir_auteur' => 'prikazati ovog autora',
'ligne' => 'Linija',
'login' => 'Spajanje',
'login_acces_prive' => 'pristup redakcijskom sistemu',
'login_autre_identifiant' => 'prijava pod drugim imenom',
'login_cookie_accepte' => 'molimo, podesite Vaš browser da ih prihvati (barem za ove web stranice).',
'login_cookie_oblige' => 'da biste se pouzdano identificirali, Vaš browser mora prihvatiti cookie.',
'login_deconnexion_ok' => 'odjavljen.',
'login_erreur_pass' => 'pogrešna lozinka.',
'login_espace_prive' => 'redakcijski sistem',
'login_identifiant_inconnu' => 'korisnik "@login@" je nepoznat.',
'login_login' => 'prijava:',
'login_login2' => 'prijava (korisničko ime za pristup web stranicama):',
'login_login_pass_incorrect' => '(pogrešno korisničko ime ili lozinka).',
'login_motpasseoublie' => 'zaboravljena lozinka?',
'login_non_securise' => 'Oprez, ovaj formular nije siguran.
Ako želite da Vaša lozinka bude nevidljiva u mreži,
molimo aktivirajte JavaScript u Vašem browseru i',
'login_nouvelle_tentative' => 'novi pokušaj',
'login_par_ici' => 'Vi ste registrirani... idite ovamo...',
'login_pass2' => 'lozinka:',
'login_preferez_refuser' => '<b>Ako ne želite primiti cookie</b>, postoji drugi (manje siguran) način za spajanje:',
'login_recharger' => 'osvježiti ovu stranicu',
'login_rester_identifie' => 'upamti moj identitet nekoliko dana',
'login_retour_public' => 'natrag u javni dio weba',
'login_retour_site' => 'natrag u javni dio weba',
'login_retoursitepublic' => 'natrag u javni dio weba',
'login_sans_cookiie' => 'identifikacija bez cookie',
'login_securise' => 'Sigurnosna prijava',
'login_sinscrire' => 'prijava',
'login_test_navigateur' => 'ispitivanje browsera / ponovno spajanje',
'login_verifiez_navigateur' => '(međutim, provjerite da li je Vaš browser možda upamtio Vašu lozinku...)',
// M
'masquer_colonne' => 'Sakriti ovaj stupac',
'masquer_trad' => 'sakriti prijevode',
'module_fichiers_langues' => 'jezične datoteke',
// N
'navigateur_pas_redirige' => 'Ako Vas Vaš browser ne odvede dalje, kliknite ovdje za nastavak.',
'numero' => 'Broj',
// O
'occurence' => 'Instanca',
'onglet_affacer_base' => 'obrisati bazu podataka',
'onglet_auteur' => 'autor',
'onglet_contenu_site' => 'sadržaj weba',
'onglet_evolution_visite_mod' => 'razvitak posjeta',
'onglet_fonctions_avances' => 'napredne fukcije',
'onglet_informations_personnelles' => 'osobne informacije',
'onglet_interactivite' => 'interaktivnost',
'onglet_messagerie' => 'sistem za poruke',
'onglet_repartition_rubrique' => 'raspodjela po rubrikama',
'onglet_save_restaur_base' => 'snimiti / povratiti bazu podataka',
'onglet_vider_cache' => 'isprazniti cache',
// P
'pass_choix_pass' => 'unesite Vašu novu lozinku:',
'pass_erreur' => 'greška',
'pass_erreur_acces_refuse' => '<b>greška:</b> Vi nemate više pristup ovim web stranicama.',
'pass_erreur_code_inconnu' => '<b>greška:</b> ova oznaka ne odgovara niti jednom korisniku ovih web stranica.',
'pass_erreur_non_enregistre' => '<b>greška:</b> adresa <tt>@email_oubli@</tt> nije registrirana na ovim web stranicama.',
'pass_erreur_non_valide' => '<b>greška:</b> mail adresa <tt>@email_oubli@</tt> je neispravna!',
'pass_erreur_probleme_technique' => '<b>greška:</b> ovaj mail nije mogao biti poslan zbog tehničkih poteškoća.',
'pass_espace_prive_bla' => 'Redakcijski sistem je otvoren samo za registrirane korisnike.
Kad se registrirate, možete pregledati članke u obradi,
pisati nove članke i sudjelovati u svim forumima.',
'pass_forum_bla' => 'Zatražili ste sudjelovanje u forumu koji je
rezerviran samo za registrirane korisnike.',
'pass_indiquez_cidessous' => 'Unesite dolje mail adresu sa kojom se ste
ranije registrirali. Nakon toga ćete
dobiti mail sa uputama kako da ponovo
dobijete pristup.',
'pass_mail_passcookie' => '(ovo je automatska poruka)
Da biste ponovo dobili pristup web stranicama
@nom_site_spip@ (@adresse_site@)
idite na slijedeću adresu:
@sendcookie@
Tada možete unijeti novu lozinku i
ponovo dobiti pristup web stranicama.
',
'pass_mot_oublie' => 'lozinka zaboravljena',
'pass_nouveau_enregistre' => 'Vaša nova lozinka je upamćena.',
'pass_nouveau_pass' => 'nova lozinka',
'pass_ok' => 'OK',
'pass_oubli_mot' => 'lozinka zaboravljena',
'pass_procedure_changer' => 'Kako bismo promjenili vašu lozinku, moramo prvo provjeriti vaš identitet. Stoga nam morate navesti mail adresu pridruženu vašem korisničkom računu.',
'pass_quitter_fenetre' => 'napustiti ovaj prozor',
'pass_rappel_login' => 'podsjetnik: Vaše korisničko ime za prijavu (login) je "@login@".',
'pass_recevoir_mail' => 'Primit ćete mail sa uputama za povrat pristupa web stranicama.',
'pass_retour_public' => 'natrag u javno područje weba',
'pass_rien_a_faire_ici' => 'ovdje se nema što raditi.',
'pass_vousinscrire' => 'registrirati se na web stranicama',
'precedent' => 'prethodno',
'previsualisation' => 'provjeriti izgled',
'previsualiser' => 'pokazati izgled',
// R
'retour' => 'Povratak',
// S
'spip_conforme_dtd' => 'SPIP nalazi da je ova stranica u skladu sa njenim DOCTYPE:',
'squelette' => 'predložak',
'squelette_inclus_ligne' => 'sadržani predložak, linija',
'squelette_ligne' => 'predložak, linija',
'stats_visites_et_popularite' => 'posjete: @visites@; popularnost: @popularite@',
'suivant' => 'slijedeće',
// T
'taille_go' => '@taille@ Gb',
'taille_ko' => '@taille@ kb',
'taille_mo' => '@taille@ Mb',
'taille_octets' => '@taille@ bytes',
'texte_actualite_site_1' => 'Kad upoznate interface, kliknite na «',
'texte_actualite_site_2' => 'potpuni interface',
'texte_actualite_site_3' => '» da biste vidjeli više mogućnosti.',
'texte_creation_automatique_vignette' => 'Ovaj web automatski pravi male sličice. Ako pomoću ovog formulara instalirate slike formata @gd_formats@, od njih će biti automatski napravljene i male sličice veličine maksimalno @taille_preview@ točaka.',
'texte_documents_associes' => 'Slijedeći dokumenti pripadaju članku, ali nisu direkno uključeni u njega. Ovisno o izgledu javnog područja weba, oni se mogu tamo vidjeti kao pridruženi dokumenti.',
'texte_erreur_mise_niveau_base' => 'Greška u bazi podataka prilikom unapređenja verzije.
Slika <b>@fichier@</b> nije mogla biti preuzeta (članak @id_article@).<p>
Brižljivo zabilježite ove oznake, i zatim ponovo pokušajte unaprediti verziju.
Nakon toga provjerite da li se slike pojavljuju u člancima.',
'texte_erreur_visiteur' => 'Pokušali ste pristupiti privatnoj dijelu koristeći login koji to ne dozvoljava.',
'texte_inc_auth_1' => 'Vi se ste predstavili korisničkim imenom
<b>@auth_login@</b>, ali to korisničko ime ne postoji (više) u bazi podataka.
Pokušajte',
'texte_inc_auth_2' => 'se ponovo spojiti',
'texte_inc_auth_3' => ', nakon što ste zatvorili i ponovno pokrenuli Vaš browser.',
'texte_inc_config' => 'Izmjene u slijedećim podešavanjima imaju veliki utjecaj na funkcioniranje ovih web stranica. Savjetujemo Vam da ništa ne mijenjate, osim ako dobro poznajete ustrojstvo programa
SPIP. <br /><br /><b>Uopćeno rečeno, izričito vam savjetujemo da izmjene prepustite glavnom administratoru web stranica.</b>',
'texte_inc_meta_1' => 'Dogodila se greška prilikom pokušaja pisanja datoteke <code>@fichier@</code>. Ako ste Vi administrator, molim da',
'texte_inc_meta_2' => 'dozvole pristupa',
'texte_inc_meta_3' => 'za direktorij <code>@repertoire@</code>.',
'texte_statut_en_cours_redaction' => 'obrada u toku',
'texte_statut_poubelle' => 'obrisano',
'texte_statut_propose_evaluation' => 'podnešeno na provjeru',
'texte_statut_publie' => 'objavljeno',
'texte_statut_refuse' => 'odbačeno',
'titre_ajouter_mot_cle' => 'DODATI KLJUČNU RIJEČ:',
'titre_cadre_raccourcis' => 'PREČACI:',
'titre_changer_couleur_interface' => 'promjena boje interface-a',
'titre_image_admin_article' => 'Vi možete upravljati ovim člankom',
'titre_image_administrateur' => 'administrator',
'titre_image_aide' => 'pomoć za ovu stavku',
'titre_image_auteur_supprime' => 'autor obrisan',
'titre_image_redacteur' => 'autor bez pristupa',
'titre_image_redacteur_02' => 'autor',
'titre_image_selecteur' => 'Prikazati popis',
'titre_image_visiteur' => 'posjetitelj',
'titre_joindre_document' => 'PRIDRUŽITI DOKUMENT',
'titre_mots_cles' => 'KLJUČNE RIJEČI',
'titre_probleme_technique' => 'Upozorenje: tehnički problem (SQL poslužitelj) onemogućava pristup ovom dijelu weba. Hvala na razumijevanju.',
'titre_publier_document' => 'OBJAVITI DOKUMENT U OVOJ RUBRICI',
'titre_signatures_attente' => 'Potpisi koji čekaju na potvrdu',
'titre_signatures_confirmees' => 'Potvrđeni potpisi',
'titre_statistiques' => 'statistika web stranica',
'titre_titre_document' => 'naslov dokumenta:',
'todo' => 'u pripremi',
'trad_reference' => '(referentni članak)',
// Z
'zbug_balise_b_aval' => ': tag B se mora nalaziti prije petlje',
'zbug_balise_inexistante' => 'greška @from@: oznaka @balise@ ne postoji',
'zbug_balise_sans_argument' => 'Nedostaje parametar u oznaci @balise@',
'zbug_boucle' => 'petlja',
'zbug_boucle_recursive_undef' => 'nedefinirana rekurzivna petlja: @nom@',
'zbug_calcul' => 'proračun',
'zbug_champ_hors_boucle' => 'polje @champ@ van petlje',
'zbug_champ_hors_motif' => 'polje @champ@ van pripadajućeg konteksta (petlje) @motif@',
'zbug_code' => 'kod',
'zbug_critere_inconnu' => 'nepoznati kriterij @critere@',
'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} na tablici bez primarnog ključa',
'zbug_distant_interdit' => 'vanjski podaci zabranjeni',
'zbug_doublon_table_sans_cle_primaire' => 'Dvostruki zapisi u tablici koja ne posjeduje jednostavan primarni ključ',
'zbug_doublon_table_sans_index' => 'Dvostruki zapisi u tablici bez indeksa',
'zbug_erreur_boucle_double' => 'Petlja @id@: dvostruka definicija',
'zbug_erreur_boucle_fermant' => 'Petlja @id@: nedostaje zatvarajuća oznaka',
'zbug_erreur_boucle_syntaxe' => 'Nevaljana sintaksa petlje (BOUCLE) ',
'zbug_erreur_compilation' => 'Greška pri kompilaciji',
'zbug_erreur_execution_page' => 'Greška pri izvršenju',
'zbug_erreur_filtre' => 'Nedefiniran filter @filtre@',
'zbug_erreur_meme_parent' => '{meme_parent} je primjenljiv samo na (FORUMS) i (RUBRIQUES)',
'zbug_erreur_squelette' => 'greška (greške) u predlošku (template)',
'zbug_hors_compilation' => 'Nije kompilirano',
'zbug_info_erreur_squelette' => 'greška na web stranicama',
'zbug_inversion_ordre_inexistant' => 'Preokretanje nepostojećeg poretka',
'zbug_pagination_sans_critere' => 'Oznaka #PAGINATION bez kriterija {pagination}, ili korištena u rekurzivnoj petlji',
'zbug_parametres_inclus_incorrects' => 'Pogrešni parametri uključivanja: @param@',
'zbug_profile' => 'Vrijeme računanja: @time@',
'zbug_resultat' => 'rezultat',
'zbug_serveur_indefini' => 'SQL poslužitelj nedefiniran',
'zbug_statistiques' => 'Statistika SQL upita po redoslijedu trajanja',
'zbug_table_inconnue' => 'nepoznata SQL tabela "@table@"',
'zxml_connus_attributs' => 'poznata svojstva',
'zxml_de' => 'od',
'zxml_inconnu_attribut' => 'nepoznato svojstvo',
'zxml_inconnu_balise' => 'nepoznata oznaka',
'zxml_inconnu_entite' => 'nepoznati entitet',
'zxml_inconnu_id' => 'nepoznat ID',
'zxml_mais_de' => 'ali od',
'zxml_non_conforme' => 'ne odgovara načelu',
'zxml_non_fils' => 'nije dijete od',
'zxml_nonvide_balise' => 'oznaka nije prazna',
'zxml_obligatoire_attribut' => 'traženo svojstvo nedostaje u',
'zxml_succession_fils_incorrecte' => 'pogrešno naslijeđivanje',
'zxml_survoler' => 'da biste vidjeli ispravne, postavite kursor iznad ',
'zxml_valeur_attribut' => 'vrijednost svojstva',
'zxml_vide_balise' => 'prazna oznaka',
'zxml_vu' => 'već viđeno'
);
?>

View file

@ -0,0 +1,735 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de http://trad.spip.net/tradlang_module/spip?lang_cible=oc_ni_mis
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// 0
'0_URL' => 'http://listes.rezo.net/mailman/listinfo/spip-oc',
'0_langue' => 'Nissart (mistralenc) [oc_ni_mis]',
'0_liste' => 'spip-oc@rezo.net',
'0_mainteneur' => 'Sylvain Oliver : spip -at- oliver-fr.org',
// A
'access_interface_graphique' => 'Retour a linterfaça gràfica coumpleta',
'access_mode_texte' => 'Afichà linterfaç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 dun 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 dachès a lespaci 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 lO',
'barre_eo_maj' => 'Inscrì una E en lO 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à ladressa dóu vouòstre estac (poudès endicà una adressa web souta la forma http://www.loumieusit.com o simplamen endicà lou número dun article daqueu 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à danounci',
'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 linterfaça',
'colonne' => 'Coulòna',
'confirm_changer_statut' => 'Mèfi, avès demandat de cambià lestatut daquel 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@ doutobre',
'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@ dabrié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@ daoust',
'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 linstalacioun',
'dirs_preliminaire' => 'Preliminari : <b>Reglà lu drech dachès</b>',
'dirs_probleme_droits' => 'Proublèma de drech dachè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 dun proublema de maiùscoula o minùscula mau metuda.
Verificàs que li minùscula e maiùscoula daquelu repertori courrespouòndon ben embé cen ques afichat
aquì soubre ; ses pas lou cas, renoumàs lu repertori embé lou vouòstre lougiciau FTP per courregì lerrour.</p>
<p>Un còu quaurè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 remedià, utilisàs lou vouòstre client FTP per fin de reglà lu drech dachès de cadun
daquelu repertori. La guida dinstalacioun 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à ladressa 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
ladressa 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 de-mail : lidentificant 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à darticle
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à lespedissioun',
'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 ladressa 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 destou sit si troba a ladressa :',
'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 daquela 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 dadressa 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 dinfourmacioun, 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 desquè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 dimage 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à dimage ai fourmat JPEG, GIF e PNG.',
'info_installer_images_dossier' => 'Instalà dimage 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' => 'larticle',
'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 duna traducioun toutala o partiala dei test de linterfaça. Se seleciounàs aqueli lenga, touplen delemen 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 destou 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' => 'Larticle "@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 ladressa :',
'info_publie_01' => 'Larticle "@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é dautre 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 destou 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 lespaci 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 videntificà duna 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' => 'Lidentificant « @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, quaqueu 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' => 'sinscrié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' => 'Lautour',
'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à lamagadou',
// 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 quan achès en estou sit.',
'pass_erreur_non_enregistre' => '<b>Errour :</b> ladressa <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 lencausa dun proublema tècnicou, le-mail noun si pòu estre mandat. ',
'pass_espace_prive_bla' => 'Lespaci privat destou sit es dubèrt ai
visitaire que si soun inscrich. Un còu registrat,
pourès counsultà lu article en cours de redacioun,
proupausà darticle nouvèu e participà a toui lu fòrou.',
'pass_forum_bla' => 'Avès demandat dintervenì en un fòrou
reservat ai visitaire registrat.',
'pass_indiquez_cidessous' => 'Endicàs aquì souta ladressa e-mail quavès
prechendetemen registrat.
Receverès un e-mail que vendiquerà 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 ladressa 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 ladressa 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 vespliquerà 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' => 'Vinscrié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é linterfaç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. Sinstalàs dimage ai fourmat @gd_formats@ a partì destou fourmulari, seràn acoumpagnadi duna vinheta duna talha massimala de @taille_preview@ pixel.',
'texte_documents_associes' => 'Lu doucumen seguent soun assouciat dau article,
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.
Limage <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 dachèdre a lespaci privat embun 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 daqueli 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 lescritura dóu fichié <code>@fichier@</code>. Vourguès, couma aministratour dóu sit,',
'texte_inc_meta_2' => 'verificà lu drech descritura',
'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 linterfaça',
'titre_image_admin_article' => 'Poudès aministrà aquel article',
'titre_image_administrateur' => 'Aministratour',
'titre_image_aide' => 'Dajuda 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 dachedre 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 dun 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 desecucioun de la pàgina',
'zbug_erreur_filtre' => 'Errour : filtre <b>« @filtre@ »</b> noun definit',
'zbug_erreur_meme_parent' => '{meme_parent} saplica unicamen ai blouca (FORUMS) o (RUBRIQUES)',
'zbug_erreur_squelette' => 'Errour en lesquelètrou',
'zbug_hors_compilation' => 'Fouòra Coumpilacioun',
'zbug_info_erreur_squelette' => 'Error soubre lou sit',
'zbug_inversion_ordre_inexistant' => 'inversioun dun ordre inesistent',
'zbug_pagination_sans_critere' => 'Balisa #PAGINATION sensa critèri {pagination} o emplegada en una blouca recoursiva',
'zbug_parametres_inclus_incorrects' => 'Parametre denclusioun 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 latribut',
'zxml_vide_balise' => 'balisa vuèia',
'zxml_vu' => 'vist adé'
);
?>

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="spip" prefix="spip"
categorie="outil" categorie="outil"
version="3.0.17" version="3.0.21"
etat="stable" etat="stable"
compatibilite="];[" compatibilite="];["
schema="19268" schema="19268"

View file

@ -477,6 +477,8 @@ function inclure_modele($type, $id, $params, $lien, $connect='', $env=array()) {
$contexte['lien'] = str_replace("&quot;",'"', $lien['href']); $contexte['lien'] = str_replace("&quot;",'"', $lien['href']);
$contexte['lien_class'] = $lien['class']; $contexte['lien_class'] = $lien['class'];
$contexte['lien_mime'] = $lien['mime']; $contexte['lien_mime'] = $lien['mime'];
$contexte['lien_title'] = $lien['title'];
$contexte['lien_hreflang'] = $lien['hreflang'];
} }
// Traiter les parametres // Traiter les parametres

View file

@ -72,10 +72,11 @@ function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle,
$erreur_p_i_i = array('zbug_parametres_inclus_incorrects', $erreur_p_i_i = array('zbug_parametres_inclus_incorrects',
array('param' => $var->nom_champ)); array('param' => $var->nom_champ));
erreur_squelette($erreur_p_i_i, $p); 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 { } else {
preg_match(",^([^=]*)(=?)(.*)$,", $var->texte,$m); preg_match(",^([^=]*)(=?)(.*)$,m", $var->texte,$m);
$var = $m[1]; $var = $m[1];
$auto = false;; $auto = false;;
if ($m[2]) { if ($m[2]) {
@ -445,6 +446,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
// afin que le corps de boucle affecte la globale directement // afin que le corps de boucle affecte la globale directement
$init_lang = "lang_select(\$GLOBALS['spip_lang']);\n\t"; $init_lang = "lang_select(\$GLOBALS['spip_lang']);\n\t";
$fin_lang = "lang_select();\n\t"; $fin_lang = "lang_select();\n\t";
$fin_lang_select_public = "\n\t\tlang_select();";
$corps .= $corps .=
"\n\t\tlang_select_public(" "\n\t\tlang_select_public("
@ -458,6 +460,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
else { else {
$init_lang = ''; $init_lang = '';
$fin_lang = ''; $fin_lang = '';
$fin_lang_select_public = '';
// sortir les appels au traducteur (invariants de boucle) // sortir les appels au traducteur (invariants de boucle)
if (strpos($return, '?php') === false if (strpos($return, '?php') === false
AND preg_match_all("/\W(_T[(]'[^']*'[)])/", $return, $r)) { AND preg_match_all("/\W(_T[(]'[^']*'[)])/", $return, $r)) {
@ -502,6 +505,9 @@ function calculer_boucle_nonrec($id_boucle, &$boucles, $trace) {
. $boucle->partie . $boucle->partie
. $corps; . $corps;
// depiler la lang de la boucle si besoin
$corps .= $fin_lang_select_public;
// si le corps est une constante, ne pas appeler le serveur N fois! // si le corps est une constante, ne pas appeler le serveur N fois!
if (preg_match(CODE_MONOTONE,str_replace("\\'",'',$corps), $r)) { if (preg_match(CODE_MONOTONE,str_replace("\\'",'',$corps), $r)) {

View file

@ -421,21 +421,22 @@ function lang_select_public($lang, $lang_select, $titre=null) {
// Cas 1. forcer_lang = true et pas de critere {lang_select} // Cas 1. forcer_lang = true et pas de critere {lang_select}
if (isset($GLOBALS['forcer_lang']) AND $GLOBALS['forcer_lang'] if (isset($GLOBALS['forcer_lang']) AND $GLOBALS['forcer_lang']
AND $lang_select !== 'oui') AND $lang_select !== 'oui')
return; $lang = $GLOBALS['spip_lang'];
// Cas 2. l'objet n'a pas de langue definie (ou definie a '') // Cas 2. l'objet n'a pas de langue definie (ou definie a '')
if (!strlen($lang)) elseif (!strlen($lang))
return; $lang = $GLOBALS['spip_lang'];
// Cas 3. l'objet est multilingue ! // Cas 3. l'objet est multilingue !
if ($lang_select !== 'oui' elseif ($lang_select !== 'oui'
AND strlen($titre) > 10 AND strlen($titre) > 10
AND strpos($titre, '<multi>') !== false AND strpos($titre, '<multi>') !== false
AND strpos(echappe_html($titre), '<multi>') !== false) AND strpos(echappe_html($titre), '<multi>') !== false)
return; $lang = $GLOBALS['spip_lang'];
// faire un lang_select() eventuellement sur la langue inchangee
lang_select($lang);
// Tous les cas ayant ete elimines, faire le job
$GLOBALS['spip_lang'] = $lang;
return; return;
} }

View file

@ -485,23 +485,24 @@ function phraser_criteres($params, &$result) {
$not = ""; $not = "";
} else { } else {
// Le debut du premier argument est l'operateur // Le debut du premier argument est l'operateur
preg_match("/^([!]?)([a-zA-Z][a-zA-Z0-9]*)[[:space:]]*(.*)$/ms", $param, $m); preg_match("/^([!]?)([a-zA-Z][a-zA-Z0-9_]*)[[:space:]]*(\??)[[:space:]]*(.*)$/ms", $param, $m);
$op = $m[2]; $op = $m[2];
$not = $m[1]; $not = $m[1];
$cond = $m[3];
// virer le premier argument, // virer le premier argument,
// et mettre son reliquat eventuel // et mettre son reliquat eventuel
// Recopier pour ne pas alterer le texte source // Recopier pour ne pas alterer le texte source
// utile au debusqueur // utile au debusqueur
if ($m[3]) { if ($m[4]) {
// une maniere tres sale de supprimer les "' autour de {critere "xxx","yyy"} // une maniere tres sale de supprimer les "' autour de {critere "xxx","yyy"}
if (preg_match(',^(["\'])(.*)\1$,', $m[3])) { if (preg_match(',^(["\'])(.*)\1$,', $m[4])) {
$c = null; $c = null;
eval ('$c = '.$m[3].';'); eval ('$c = '.$m[4].';');
if (isset($c)) if (isset($c))
$m[3] = $c; $m[4] = $c;
} }
$texte = new Texte; $texte = new Texte;
$texte->texte = $m[3]; $texte->texte = $m[4];
$v[1][0]= $texte; $v[1][0]= $texte;
} else array_shift($v[1]); } else array_shift($v[1]);
} }
@ -509,6 +510,7 @@ function phraser_criteres($params, &$result) {
$crit = new Critere; $crit = new Critere;
$crit->op = $op; $crit->op = $op;
$crit->not = $not; $crit->not = $not;
$crit->cond = $cond;
$crit->exclus =""; $crit->exclus ="";
$crit->param = $v; $crit->param = $v;
$args[] = $crit; $args[] = $crit;

View file

@ -50,7 +50,11 @@ function sandbox_composer_filtre($fonc, $code, $arglist, &$p){
elseif ($f = chercher_filtre($fonc)) { elseif ($f = chercher_filtre($fonc)) {
// cas particulier : le filtre |set doit acceder a la $Pile // cas particulier : le filtre |set doit acceder a la $Pile
// proto: filtre_set(&$Pile, $val, $args...) // 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(); $refs = $refl->getParameters();
if (isset($refs[0]) AND $refs[0]->name == 'Pile') { if (isset($refs[0]) AND $refs[0]->name == 'Pile') {
$code = "$f(\$Pile,$code$arglist)"; $code = "$f(\$Pile,$code$arglist)";

View file

@ -182,7 +182,7 @@ function spip_mysql_query($query, $serveur='',$requeter=true) {
// ajouter un debug utile dans log/mysql-slow.log ? // ajouter un debug utile dans log/mysql-slow.log ?
$debug = ''; $debug = '';
if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){ if (defined('_DEBUG_SLOW_QUERIES') AND _DEBUG_SLOW_QUERIES){
if($GLOBALS['debug']['aucasou']){ if(isset($GLOBALS['debug']['aucasou'])){
list(,$id,, $infos) = $GLOBALS['debug']['aucasou']; list(,$id,, $infos) = $GLOBALS['debug']['aucasou'];
$debug .= " BOUCLE$id @ ".$infos[0] ." | "; $debug .= " BOUCLE$id @ ".$infos[0] ." | ";
} }
@ -486,9 +486,9 @@ function spip_mysql_create($nom, $champs, $cles, $autoinc=false, $temporary=fals
return; return;
$res = spip_mysql_query("SELECT version() as v"); $res = spip_mysql_query("SELECT version() as v");
if ($row = mysql_fetch_array($res) if (($row = mysql_fetch_array($res)) && (version_compare($row['v'],'5.0','>='))) {
&& (version_compare($row['v'],'5.0','>='))) spip_mysql_query("SET sql_mode=''", $serveur);
spip_mysql_query("SET sql_mode=''"); }
foreach($cles as $k => $v) { foreach($cles as $k => $v) {
$keys .= "$s\n\t\t$k ($v)"; $keys .= "$s\n\t\t$k ($v)";
@ -639,6 +639,7 @@ function spip_mysql_repair($table, $serveur='',$requeter=true)
return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter); 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 // Recupere la definition d'une table ou d'une vue MySQL
// colonnes, indexes, etc. // colonnes, indexes, etc.
// au meme format que la definition des tables de SPIP // au meme format que la definition des tables de SPIP
@ -656,11 +657,11 @@ function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
if (!$requeter) return $s; if (!$requeter) return $s;
list(,$a) = mysql_fetch_array($s ,MYSQL_NUM); 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]; $desc = $r[1];
// extraction d'une KEY éventuelle en prenant garde de ne pas // extraction d'une KEY éventuelle en prenant garde de ne pas
// relever un champ dont le nom contient KEY (ex. ID_WHISKEY) // 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]; $namedkeys = $r[2];
$desc = $r[1]; $desc = $r[1];
} }
@ -674,8 +675,8 @@ function spip_mysql_showtable($nom_table, $serveur='',$requeter=true)
} }
$keys = array(); $keys = array();
foreach(preg_split('/\)\s*,?/',$namedkeys) as $v) { foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
if (preg_match("/^\s*([^(]*)\((.*)$/",$v,$r)) { if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
$k = str_replace("`", '', trim($r[1])); $k = str_replace("`", '', trim($r[1]));
$t = strtolower(str_replace("`", '', $r[2])); $t = strtolower(str_replace("`", '', $r[2]));
if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t; if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;

View file

@ -43,15 +43,15 @@ function req_pg_dist($addr, $port, $login, $pass, $db='', $prefixe='') {
if ($p >0) $port = " port=$p" ; else $port = ''; if ($p >0) $port = " port=$p" ; else $port = '';
$erreurs = array(); $erreurs = array();
if ($db) { if ($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);
} elseif (!@$link = pg_connect("host=$host$port 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(); $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; $db = $login;
} else { } else {
$erreurs[] = pg_last_error(); $erreurs[] = pg_last_error();
$db = _DEFAULT_DB; $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) { if (!$link) {

View file

@ -1209,7 +1209,7 @@ function spip_sqlite_showbase($match, $serveur = '', $requeter = true){
return spip_sqlite_query("SELECT name FROM sqlite_master WHERE type='table' AND tbl_name REGEXP "._q($match), $serveur, $requeter); 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 // http://doc.spip.org/@spip_sqlite_showtable
function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
$query = $query =
@ -1229,13 +1229,13 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
// c'est une table // c'est une table
// il faut parser le create // il faut parser le create
if (!$vue){ if (!$vue){
if (!preg_match("/^[^(),]*\((([^()]*(\([^()]*\))?[^()]*)*)\)[^()]*$/", array_shift($a), $r)) if (!preg_match(_SQLITE_RE_SHOW_TABLE, array_shift($a), $r)){
return ""; return "";
else { } else {
$desc = $r[1]; $desc = $r[1];
// extraction d'une KEY éventuelle en prenant garde de ne pas // extraction d'une KEY éventuelle en prenant garde de ne pas
// relever un champ dont le nom contient KEY (ex. ID_WHISKEY) // 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]; $namedkeys = $r[2];
$desc = $r[1]; $desc = $r[1];
} }
@ -1282,8 +1282,8 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
} }
} }
// key inclues dans la requete // key inclues dans la requete
foreach (preg_split('/\)\s*,?/', $namedkeys) as $v){ foreach(preg_split('/\)\s*(,|$)/',$namedkeys) as $v) {
if (preg_match("/^\s*([^(]*)\((.*)$/", $v, $r)){ if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/",$v,$r)) {
$k = str_replace("`", '', trim($r[1])); $k = str_replace("`", '', trim($r[1]));
$t = trim(strtolower(str_replace("`", '', $r[2])), '"'); $t = trim(strtolower(str_replace("`", '', $r[2])), '"');
if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t; if ($k && !isset($keys[$k])) $keys[$k] = $t; else $keys[] = $t;
@ -1304,8 +1304,9 @@ function spip_sqlite_showtable($nom_table, $serveur = '', $requeter = true){
$keys['KEY '.$key] = $colonnes; $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 if ($res = sql_fetsel('*', $nom_table, '', '', '', '1', '', $serveur)){ // limit 1
$fields = array(); $fields = array();
foreach ($res as $c => $v) $fields[$c] = ''; foreach ($res as $c => $v) $fields[$c] = '';

View file

@ -12,7 +12,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return; 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) { function action_editer_breve_dist($arg=null) {
if (is_null($arg)){ if (is_null($arg)){
@ -35,7 +35,7 @@ function action_editer_breve_dist($arg=null) {
/** /**
* Inserer une breve en base * Inserer une breve en base
* http://doc.spip.org/@insert_breve * http://code.spip.net/@insert_breve
* *
* @param int $id_rubrique * @param int $id_rubrique
* @return int * @return int
@ -89,7 +89,7 @@ function breve_inserer($id_rubrique) {
* Modifier une breve en base * Modifier une breve en base
* $c est un contenu (par defaut on prend le contenu via _request()) * $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 int $id_breve
* @param array $set * @param array $set

View file

@ -26,7 +26,7 @@ function breves_upgrade($nom_meta_base_version,$version_cible){
if (!isset($GLOBALS['meta'][$nom_meta_base_version])){ if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
$trouver_table = charger_fonction('trouver_table','base'); $trouver_table = charger_fonction('trouver_table','base');
if ($desc = $trouver_table('spip_breves') 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'); ecrire_meta($nom_meta_base_version,'1.0.0');
} }
// si pas de table en base, on fera une simple creation de base // si pas de table en base, on fera une simple creation de base

View file

@ -28,7 +28,7 @@ function autoriser_brevecreer_menu_dist($faire, $type, $id, $qui, $opt){
// Autoriser a creer une breve dans la rubrique $id // 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) { function autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt) {
$r = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id)); $r = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id));
return return
@ -42,7 +42,7 @@ function autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt)
// Autoriser a modifier la breve $id // Autoriser a modifier la breve $id
// = admins & redac si la breve n'est pas publiee // = admins & redac si la breve n'est pas publiee
// = admins de rubrique parente si 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) { function autoriser_breve_modifier_dist($faire, $type, $id, $qui, $opt) {
$r = sql_fetsel("id_rubrique,statut", "spip_breves", "id_breve=".intval($id)); $r = sql_fetsel("id_rubrique,statut", "spip_breves", "id_breve=".intval($id));
return return

View file

@ -54,7 +54,7 @@ function formulaires_editer_breve_verifier_dist($id_breve='new', $id_rubrique=0,
return $erreurs; 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=''){ 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); return formulaires_editer_objet_traiter('breve',$id_breve,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
} }

View file

@ -224,12 +224,14 @@ function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions
if (!preg_match(',\.css$,i', $css, $r)) return $css; if (!preg_match(',\.css$,i', $css, $r)) return $css;
$url_absolue_css = url_absolue($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(); if (!$fonctions) $fonctions = compresseur_liste_fonctions_prepare_css();
elseif (is_string($fonctions)) $fonctions = array($fonctions); elseif (is_string($fonctions)) $fonctions = array($fonctions);
$sign = implode(",",$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 = basename($css,'.css');
$file = sous_repertoire (_DIR_VAR, 'cache-css') $file = sous_repertoire (_DIR_VAR, 'cache-css')
@ -251,9 +253,7 @@ function &compresseur_callback_prepare_css(&$css, $is_inline = false, $fonctions
elseif (!lire_fichier($css, $contenu)) elseif (!lire_fichier($css, $contenu))
return $css; return $css;
// retirer le protocole de $url_absolue_css $contenu = compresseur_callback_prepare_css_inline($contenu, $url_absolue_css_implicite, $fonctions);
$url_absolue_css = protocole_implicite($url_absolue_css);
$contenu = compresseur_callback_prepare_css_inline($contenu, $url_absolue_css, $fonctions);
// ecrire la css // ecrire la css
if (!ecrire_fichier($file, $contenu)) if (!ecrire_fichier($file, $contenu))

View file

@ -86,7 +86,7 @@ function concatener_fichiers($files,$format='js', $callbacks = array()){
// preparer le contenu si necessaire // preparer le contenu si necessaire
if ($callback_pre) 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 // enlever le var_mode si present pour retrouver la css minifiee standard
if (strpos($file[1],'var_mode')!==false) { if (strpos($file[1],'var_mode')!==false) {
if (!$files2) $files2 = $files; if (!$files2) $files2 = $files;

View file

@ -88,7 +88,7 @@ class JavaScriptPacker {
'High ASCII' => 95 'High ASCII' => 95
); );
// http://doc.spip.org/@JavaScriptPacker // http://code.spip.net/@JavaScriptPacker
function JavaScriptPacker($_script, $_encoding = 62, $_fastDecode = true, $_specialChars = false) function JavaScriptPacker($_script, $_encoding = 62, $_fastDecode = true, $_specialChars = false)
{ {
$this->_script = $_script . "\n"; $this->_script = $_script . "\n";
@ -99,7 +99,7 @@ class JavaScriptPacker {
$this->_specialChars = $_specialChars; $this->_specialChars = $_specialChars;
} }
// http://doc.spip.org/@pack // http://code.spip.net/@pack
function pack() { function pack() {
$this->_addParser('_basicCompression'); $this->_addParser('_basicCompression');
if ($this->_specialChars) if ($this->_specialChars)
@ -112,7 +112,7 @@ class JavaScriptPacker {
} }
// apply all parsing routines // apply all parsing routines
// http://doc.spip.org/@_pack // http://code.spip.net/@_pack
function _pack($script) { function _pack($script) {
for ($i = 0; isset($this->_parsers[$i]); $i++) { for ($i = 0; isset($this->_parsers[$i]); $i++) {
$script = call_user_func(array(&$this,$this->_parsers[$i]), $script); $script = call_user_func(array(&$this,$this->_parsers[$i]), $script);
@ -122,13 +122,13 @@ class JavaScriptPacker {
// keep a list of parsing functions, they'll be executed all at once // keep a list of parsing functions, they'll be executed all at once
var $_parsers = array(); var $_parsers = array();
// http://doc.spip.org/@_addParser // http://code.spip.net/@_addParser
function _addParser($parser) { function _addParser($parser) {
$this->_parsers[] = $parser; $this->_parsers[] = $parser;
} }
// zero encoding - just removal of white space and comments // zero encoding - just removal of white space and comments
// http://doc.spip.org/@_basicCompression // http://code.spip.net/@_basicCompression
function _basicCompression($script) { function _basicCompression($script) {
$parser = new ParseMaster(); $parser = new ParseMaster();
// make safe // make safe
@ -164,7 +164,7 @@ class JavaScriptPacker {
return $parser->exec($script); return $parser->exec($script);
} }
// http://doc.spip.org/@_encodeSpecialChars // http://code.spip.net/@_encodeSpecialChars
function _encodeSpecialChars($script) { function _encodeSpecialChars($script) {
$parser = new ParseMaster(); $parser = new ParseMaster();
// replace: $name -> n, $$name -> na // replace: $name -> n, $$name -> na
@ -187,7 +187,7 @@ class JavaScriptPacker {
return $parser->exec($script); return $parser->exec($script);
} }
// http://doc.spip.org/@_encodeKeywords // http://code.spip.net/@_encodeKeywords
function _encodeKeywords($script) { function _encodeKeywords($script) {
// escape high-ascii values already in the script (i.e. in strings) // escape high-ascii values already in the script (i.e. in strings)
if ($this->_encoding > 62) if ($this->_encoding > 62)
@ -217,7 +217,7 @@ class JavaScriptPacker {
} }
} }
// http://doc.spip.org/@_analyze // http://code.spip.net/@_analyze
function _analyze($script, $regexp, $encode) { function _analyze($script, $regexp, $encode) {
// analyse // analyse
// retreive all words in the script // retreive all words in the script
@ -292,13 +292,13 @@ class JavaScriptPacker {
} }
var $_count = array(); var $_count = array();
// http://doc.spip.org/@_sortWords // http://code.spip.net/@_sortWords
function _sortWords($match1, $match2) { function _sortWords($match1, $match2) {
return $this->_count[$match2] - $this->_count[$match1]; return $this->_count[$match2] - $this->_count[$match1];
} }
// build the boot function used for loading and decoding // build the boot function used for loading and decoding
// http://doc.spip.org/@_bootStrap // http://code.spip.net/@_bootStrap
function _bootStrap($packed, $keywords) { function _bootStrap($packed, $keywords) {
$ENCODE = $this->_safeRegExp('$encode\\($count\\)'); $ENCODE = $this->_safeRegExp('$encode\\($count\\)');
@ -378,17 +378,17 @@ class JavaScriptPacker {
} }
var $buffer; var $buffer;
// http://doc.spip.org/@_insertFastDecode // http://code.spip.net/@_insertFastDecode
function _insertFastDecode($match) { function _insertFastDecode($match) {
return '{' . $this->buffer . ';'; return '{' . $this->buffer . ';';
} }
// http://doc.spip.org/@_insertFastEncode // http://code.spip.net/@_insertFastEncode
function _insertFastEncode($match) { function _insertFastEncode($match) {
return '{$encode=' . $this->buffer . ';'; return '{$encode=' . $this->buffer . ';';
} }
// mmm.. ..which one do i need ?? // mmm.. ..which one do i need ??
// http://doc.spip.org/@_getEncoder // http://code.spip.net/@_getEncoder
function _getEncoder($ascii) { function _getEncoder($ascii) {
return $ascii > 10 ? $ascii > 36 ? $ascii > 62 ? return $ascii > 10 ? $ascii > 36 ? $ascii > 62 ?
'_encode95' : '_encode62' : '_encode36' : '_encode10'; '_encode95' : '_encode62' : '_encode36' : '_encode10';
@ -396,21 +396,21 @@ class JavaScriptPacker {
// zero encoding // zero encoding
// characters: 0123456789 // characters: 0123456789
// http://doc.spip.org/@_encode10 // http://code.spip.net/@_encode10
function _encode10($charCode) { function _encode10($charCode) {
return $charCode; return $charCode;
} }
// inherent base36 support // inherent base36 support
// characters: 0123456789abcdefghijklmnopqrstuvwxyz // characters: 0123456789abcdefghijklmnopqrstuvwxyz
// http://doc.spip.org/@_encode36 // http://code.spip.net/@_encode36
function _encode36($charCode) { function _encode36($charCode) {
return base_convert($charCode, 10, 36); return base_convert($charCode, 10, 36);
} }
// hitch a ride on base36 and add the upper case alpha characters // hitch a ride on base36 and add the upper case alpha characters
// characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ // characters: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
// http://doc.spip.org/@_encode62 // http://code.spip.net/@_encode62
function _encode62($charCode) { function _encode62($charCode) {
$res = ''; $res = '';
if ($charCode >= $this->_encoding) { if ($charCode >= $this->_encoding) {
@ -426,7 +426,7 @@ class JavaScriptPacker {
// use high-ascii values // use high-ascii values
// characters: ¬°¬¢¬£¬§¬•¬¶¬ß¬®¬©¬™¬´¬¨¬≠¬Æ¬Ø¬∞¬±¬≤¬≥¬¥¬µ¬∂¬∑¬∏¬π¬∫¬ª¬º¬Ω¬æ¬ø√Ä√?√Ç√É√Ñ√Ö√Ü√á√à√â√ä√ã√å√?√é√?√?√ë√í√ì√î√ï√ñ√ó√ò√ô√ö√õ√ú√?√û√ü√†√°√¢√£√§√•√¶√ß√®√©√™√´√¨√≠√Æ√Ø√∞√±√≤√≥√¥√µ√∂√∑√∏√π√∫√ª√º√Ω√æ // characters: ¬°¬¢¬£¬§¬•¬¶¬ß¬®¬©¬™¬´¬¨¬≠¬Æ¬Ø¬∞¬±¬≤¬≥¬¥¬µ¬∂¬∑¬∏¬π¬∫¬ª¬º¬Ω¬æ¬ø√Ä√?√Ç√É√Ñ√Ö√Ü√á√à√â√ä√ã√å√?√é√?√?√ë√í√ì√î√ï√ñ√ó√ò√ô√ö√õ√ú√?√û√ü√†√°√¢√£√§√•√¶√ß√®√©√™√´√¨√≠√Æ√Ø√∞√±√≤√≥√¥√µ√∂√∑√∏√π√∫√ª√º√Ω√æ
// http://doc.spip.org/@_encode95 // http://code.spip.net/@_encode95
function _encode95($charCode) { function _encode95($charCode) {
$res = ''; $res = '';
if ($charCode >= $this->_encoding) if ($charCode >= $this->_encoding)
@ -435,24 +435,24 @@ class JavaScriptPacker {
return $res . chr(($charCode % $this->_encoding) + 161); return $res . chr(($charCode % $this->_encoding) + 161);
} }
// http://doc.spip.org/@_safeRegExp // http://code.spip.net/@_safeRegExp
function _safeRegExp($string) { function _safeRegExp($string) {
return '/'.preg_replace('/\$/', '\\\$', $string).'/'; return '/'.preg_replace('/\$/', '\\\$', $string).'/';
} }
// http://doc.spip.org/@_encodePrivate // http://code.spip.net/@_encodePrivate
function _encodePrivate($charCode) { function _encodePrivate($charCode) {
return "_" . $charCode; return "_" . $charCode;
} }
// protect characters used by the parser // protect characters used by the parser
// http://doc.spip.org/@_escape // http://code.spip.net/@_escape
function _escape($script) { function _escape($script) {
return preg_replace('/([\\\\\'])/', '\\\$1', $script); return preg_replace('/([\\\\\'])/', '\\\$1', $script);
} }
// protect high-ascii characters already in the script // protect high-ascii characters already in the script
// http://doc.spip.org/@_escape95 // http://code.spip.net/@_escape95
function _escape95($script) { function _escape95($script) {
return preg_replace_callback( return preg_replace_callback(
'/[\\xa1-\\xff]/', '/[\\xa1-\\xff]/',
@ -460,13 +460,13 @@ class JavaScriptPacker {
$script $script
); );
} }
// http://doc.spip.org/@_escape95Bis // http://code.spip.net/@_escape95Bis
function _escape95Bis($match) { function _escape95Bis($match) {
return '\x'.((string)dechex(ord($match))); return '\x'.((string)dechex(ord($match)));
} }
// http://doc.spip.org/@_getJSFunction // http://code.spip.net/@_getJSFunction
function _getJSFunction($aName) { function _getJSFunction($aName) {
$func = 'JSFUNCTION'.$aName; $func = 'JSFUNCTION'.$aName;
if (isset($this->$func)){ if (isset($this->$func)){
@ -580,7 +580,7 @@ class ParseMaster {
var $QUOTE = '/\'/'; var $QUOTE = '/\'/';
var $DELETED = '/\\x01[^\\x01]*\\x01/';//g var $DELETED = '/\\x01[^\\x01]*\\x01/';//g
// http://doc.spip.org/@add // http://code.spip.net/@add
function add($expression, $replacement = '') { function add($expression, $replacement = '') {
// count the number of sub-expressions // count the number of sub-expressions
// - add one because each pattern is itself a sub-expression // - add one because each pattern is itself a sub-expression
@ -614,7 +614,7 @@ class ParseMaster {
else $this->_add('/^$/', $replacement, $length); else $this->_add('/^$/', $replacement, $length);
} }
// http://doc.spip.org/@exec // http://code.spip.net/@exec
function exec($string) { function exec($string) {
// execute the global replacement // execute the global replacement
$this->_escaped = array(); $this->_escaped = array();
@ -641,7 +641,7 @@ class ParseMaster {
return preg_replace($this->DELETED, '', $string); return preg_replace($this->DELETED, '', $string);
} }
// http://doc.spip.org/@reset // http://code.spip.net/@reset
function reset() { function reset() {
// clear the patterns collection so that this object may be re-used // clear the patterns collection so that this object may be re-used
$this->_patterns = array(); $this->_patterns = array();
@ -652,14 +652,14 @@ class ParseMaster {
var $_patterns = array(); // patterns stored by index var $_patterns = array(); // patterns stored by index
// create and add a new pattern to the patterns collection // create and add a new pattern to the patterns collection
// http://doc.spip.org/@_add // http://code.spip.net/@_add
function _add() { function _add() {
$arguments = func_get_args(); $arguments = func_get_args();
$this->_patterns[] = $arguments; $this->_patterns[] = $arguments;
} }
// this is the global replace function (it's quite complicated) // this is the global replace function (it's quite complicated)
// http://doc.spip.org/@_replacement // http://code.spip.net/@_replacement
function _replacement($arguments) { function _replacement($arguments) {
if (empty($arguments)) return ''; if (empty($arguments)) return '';
@ -692,7 +692,7 @@ class ParseMaster {
} }
} }
// http://doc.spip.org/@_backReferences // http://code.spip.net/@_backReferences
function _backReferences($match, $offset) { function _backReferences($match, $offset) {
$replacement = $this->buffer['replacement']; $replacement = $this->buffer['replacement'];
$quote = $this->buffer['quote']; $quote = $this->buffer['quote'];
@ -703,14 +703,14 @@ class ParseMaster {
return $replacement; return $replacement;
} }
// http://doc.spip.org/@_replace_name // http://code.spip.net/@_replace_name
function _replace_name($match, $offset){ function _replace_name($match, $offset){
$length = strlen($match[$offset + 2]); $length = strlen($match[$offset + 2]);
$start = $length - max($length - strlen($match[$offset + 3]), 0); $start = $length - max($length - strlen($match[$offset + 3]), 0);
return substr($match[$offset + 1], $start, $length) . $match[$offset + 4]; 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) { function _replace_encoded($match, $offset) {
return $this->buffer[$match[$offset]]; return $this->buffer[$match[$offset]];
} }
@ -721,7 +721,7 @@ class ParseMaster {
var $buffer; var $buffer;
// encode escaped characters // encode escaped characters
// http://doc.spip.org/@_escape // http://code.spip.net/@_escape
function _escape($string, $escapeChar) { function _escape($string, $escapeChar) {
if ($escapeChar) { if ($escapeChar) {
$this->buffer = $escapeChar; $this->buffer = $escapeChar;
@ -735,14 +735,14 @@ class ParseMaster {
return $string; return $string;
} }
} }
// http://doc.spip.org/@_escapeBis // http://code.spip.net/@_escapeBis
function _escapeBis($match) { function _escapeBis($match) {
$this->_escaped[] = $match[1]; $this->_escaped[] = $match[1];
return $this->buffer; return $this->buffer;
} }
// decode escaped characters // decode escaped characters
// http://doc.spip.org/@_unescape // http://code.spip.net/@_unescape
function _unescape($string, $escapeChar) { function _unescape($string, $escapeChar) {
if ($escapeChar) { if ($escapeChar) {
$regexp = '/'.'\\'.$escapeChar.'/'; $regexp = '/'.'\\'.$escapeChar.'/';
@ -758,7 +758,7 @@ class ParseMaster {
return $string; return $string;
} }
} }
// http://doc.spip.org/@_unescapeBis // http://code.spip.net/@_unescapeBis
function _unescapeBis() { function _unescapeBis() {
if (isset($this->_escaped[$this->buffer['i']]) if (isset($this->_escaped[$this->buffer['i']])
&& $this->_escaped[$this->buffer['i']] != '') && $this->_escaped[$this->buffer['i']] != '')
@ -771,7 +771,7 @@ class ParseMaster {
return $this->buffer['escapeChar'] . $temp; return $this->buffer['escapeChar'] . $temp;
} }
// http://doc.spip.org/@_internalEscape // http://code.spip.net/@_internalEscape
function _internalEscape($string) { function _internalEscape($string) {
return preg_replace($this->ESCAPE, '', $string); return preg_replace($this->ESCAPE, '', $string);
} }

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="compresseur" prefix="compresseur"
categorie="performance" categorie="performance"
version="1.8.8" version="1.8.11"
etat="stable" etat="stable"
compatibilite="[3.0.0;3.1.*]" compatibilite="[3.0.0;3.1.*]"
logo="images/compresseur-32.png" logo="images/compresseur-32.png"

View file

@ -21,11 +21,13 @@
[<span class='erreur_message'>(#GET{erreurs})</span>] [<span class='erreur_message'>(#GET{erreurs})</span>]
<div class="choix"> <div class="choix">
<input type="checkbox" name="tout_sauvegarder" id="tout_sauvegarder" value="oui"[(#ENV{tout_sauvegarder}|oui)checked="checked"] <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');" /> onclick="$(this).blur();"
<label for="tout_sauvegarder"><:dump:tout_sauvegarder:></label> onchange="jQuery(this).prop('checked')?jQuery('#liste_tables').hide('fast'):jQuery('#liste_tables').show('fast');"
</div> /><label for="tout_sauvegarder"><:dump:tout_sauvegarder:>[
<div id="liste_tables"[(#ENV{tout_sauvegarder}|oui)style="display:none;"]> <br />\(<:texte_choix_table_prefix:><b> (#ENV{_prefixe}|=={spip}|non|?{#ENV{_prefixe}})</b>\)]</label>
(#ENV*{_tables}) <div id="liste_tables"[(#ENV{tout_sauvegarder}|oui)style="display:none;"]>
(#ENV*{_tables})
</div>
</div> </div>
</li>] </li>]
</ul> </ul>
@ -34,4 +36,4 @@
<p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:dump:texte_sauvegarde_base:>' /></p> <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:dump:texte_sauvegarde_base:>' /></p>
</div></form> </div></form>
] ]
</div> </div>

View file

@ -35,6 +35,9 @@ function formulaires_sauvegarder_charger_dist(){
'_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", '_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) base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde')?(_request('tables')?_request('tables'):array()):null)
) . "</li></ol>\n", ) . "</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; return $valeurs;

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="dump" prefix="dump"
categorie="maintenance" categorie="maintenance"
version="1.6.7" version="1.6.9"
etat="stable" etat="stable"
compatibilite="[3.0.0;3.0.*]" compatibilite="[3.0.0;3.0.*]"
logo="prive/themes/spip/images/base-backup-32.png" logo="prive/themes/spip/images/base-backup-32.png"

View file

@ -23,15 +23,25 @@
[(#GET{fin}|oui) [(#GET{fin}|oui)
<h1><:dump:info_sauvegarde:></h1> <h1><:dump:info_sauvegarde:></h1>
#SET{erreurs,''}
#SET{taille,#ENV{status}|dump_taille_sauvegarde} #SET{taille,#ENV{status}|dump_taille_sauvegarde}
[(#GET{taille}|non) [(#GET{taille}|non)
#SET{archive,#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b>'}} #SET{archive,#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b>'}}
#SET{erreurs,' '}
#BOITE_OUVRIR{'','error'} #BOITE_OUVRIR{'','error'}
<:dump:erreur_taille_sauvegarde{fichier=#GET{archive}}:> <:dump:erreur_taille_sauvegarde{fichier=#GET{archive}}:>
#BOITE_FERMER #BOITE_FERMER
] ]
[(#GET{taille}|oui)
[
#BOITE_OUVRIR{'','error'}
#SET{erreurs,' '}
(#ENV{status}|dump_afficher_erreurs)
#BOITE_FERMER
]
[(#GET{erreurs}|non)
#BOITE_OUVRIR{'','success'} #BOITE_OUVRIR{'','success'}
[(#SET{archive,[(#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b> ('}|concat{[(#GET{taille}|taille_en_octets)]}|concat{')'})]})] [(#SET{archive,[(#VAL{'<b>'}|concat{#ENV{status}|dump_nom_sauvegarde|joli_repertoire}|concat{'</b> ('}|concat{[(#GET{taille}|taille_en_octets)]}|concat{')'})]})]

View file

@ -43,4 +43,13 @@ function dump_afficher_tables_sauvegardees($status_file) {
return $corps; 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;
}
?> ?>

View file

@ -9,7 +9,7 @@ $file="[(#CHEMIN{apple-touch-icon[-(#ENV{size,''})].png}|sinon{[(#LOGO_SITE_SPIP
|image_passe_partout{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)]} |image_passe_partout{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)]}
|image_recadre{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)],center} |image_recadre{[(#ENV{size,57}|intval)],[(#ENV{size,57}|intval)],center}
|image_aplatir{png,#ffffff}|extraire_attribut{src})]})]"; |image_aplatir{png,#ffffff}|extraire_attribut{src})]})]";
if ($cl = filesize(preg_replace(',[?].*$,','',$file))) if ($cl = filesize($file=preg_replace(',[?].*$,','',$file)))
header("Content-Length: ". $cl); header("Content-Length: ". $cl);
readfile($file); readfile($file);

View file

@ -20,7 +20,7 @@ include_spip('inc/filtres_images_lib_mini');
* - sont chainables les unes derrieres les autres dans toutes les combinaisons possibles * - 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) { function couleur_extraire ($img, $x=10, $y=6) {
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');
return _image_couleur_extraire($img, $x, $y); return _image_couleur_extraire($img, $x, $y);
@ -28,7 +28,7 @@ function couleur_extraire ($img, $x=10, $y=6) {
// http://doc.spip.org/@couleur_web // http://code.spip.net/@couleur_web
function couleur_web($couleur) { function couleur_web($couleur) {
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');
$rvb = _couleur_hex_to_dec($couleur); $rvb = _couleur_hex_to_dec($couleur);
@ -38,7 +38,7 @@ function couleur_web($couleur) {
return _couleur_dec_to_hex($rvb['red'],$rvb['green'],$rvb['blue']); 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) { function couleur_4096($couleur) {
$r = (substr($couleur, 0, 1)); $r = (substr($couleur, 0, 1));
$v = (substr($couleur, 2, 1)); $v = (substr($couleur, 2, 1));
@ -48,7 +48,7 @@ function couleur_4096($couleur) {
} }
// http://doc.spip.org/@couleur_extreme // http://code.spip.net/@couleur_extreme
function couleur_extreme ($couleur, $limite=0.5) { function couleur_extreme ($couleur, $limite=0.5) {
// force la couleur au noir ou au blanc le plus proche // force la couleur au noir ou au blanc le plus proche
// -> donc couleur foncee devient noire // -> donc couleur foncee devient noire
@ -77,7 +77,7 @@ function couleur_extreme ($couleur, $limite=0.5) {
return $couleur_texte; return $couleur_texte;
} }
// http://doc.spip.org/@couleur_inverser // http://code.spip.net/@couleur_inverser
function couleur_inverser ($couleur) { function couleur_inverser ($couleur) {
$couleurs = _couleur_hex_to_dec($couleur); $couleurs = _couleur_hex_to_dec($couleur);
$red = 255 - $couleurs["red"]; $red = 255 - $couleurs["red"];
@ -89,7 +89,7 @@ function couleur_inverser ($couleur) {
return $couleur; return $couleur;
} }
// http://doc.spip.org/@couleur_foncer_si_claire // http://code.spip.net/@couleur_foncer_si_claire
function couleur_foncer_si_claire ($couleur, $seuil=122) { function couleur_foncer_si_claire ($couleur, $seuil=122) {
// ne foncer que les couleurs claires // ne foncer que les couleurs claires
// utile pour ecrire sur fond blanc, // utile pour ecrire sur fond blanc,
@ -108,7 +108,7 @@ function couleur_foncer_si_claire ($couleur, $seuil=122) {
else return $couleur; 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) { function couleur_eclaircir_si_foncee ($couleur, $seuil=123) {
$couleurs = _couleur_hex_to_dec($couleur); $couleurs = _couleur_hex_to_dec($couleur);
$red = $couleurs["red"]; $red = $couleurs["red"];
@ -124,7 +124,7 @@ function couleur_eclaircir_si_foncee ($couleur, $seuil=123) {
else return $couleur; else return $couleur;
} }
// http://doc.spip.org/@couleur_saturation // http://code.spip.net/@couleur_saturation
function couleur_saturation($couleur, $val) { function couleur_saturation($couleur, $val) {
if ($couleur == "ffffff") $couleur = "eeeeee"; if ($couleur == "ffffff") $couleur = "eeeeee";
@ -145,7 +145,7 @@ function couleur_saturation($couleur, $val) {
} }
// http://doc.spip.org/@couleur_luminance // http://code.spip.net/@couleur_luminance
function couleur_luminance($couleur, $val) { function couleur_luminance($couleur, $val) {
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');

View file

@ -224,7 +224,7 @@ function _couleur_hsl2rgb ($H,$S,$L) {
// renvoit sous la forme hexadecimale ("F26C4E" par exemple). // renvoit sous la forme hexadecimale ("F26C4E" par exemple).
// Par defaut, la couleur choisie se trouve un peu au-dessus du centre de l'image. // 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. // 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) { function _image_couleur_extraire($img, $x=10, $y=6) {
static $couleur_extraite = array(); static $couleur_extraite = array();

View file

@ -28,9 +28,9 @@ include_spip('inc/filtres_images_mini');
// pour le format gif, $qualite correspond au nombre de couleurs dans la palette (defaut 128) // pour le format 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) // 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) // 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) // 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) function image_aplatir($im, $format='jpg', $coul='000000', $qualite=NULL, $transparence=false)
{ {
if ($qualite===NULL){ if ($qualite===NULL){
@ -159,7 +159,7 @@ function image_aplatir($im, $format='jpg', $coul='000000', $qualite=NULL, $trans
// Enregistrer une image dans un format donne // Enregistrer une image dans un format donne
// (conserve la transparence gif, png, ico) // (conserve la transparence gif, png, ico)
// utilise [->@image_aplatir] // utilise [->@image_aplatir]
// http://doc.spip.org/@image_format // http://code.spip.net/@image_format
function image_format($img, $format='png') { function image_format($img, $format='png') {
$qualite = null; $qualite = null;
if ($format=='png8') {$format='png';$qualite=128;} if ($format=='png8') {$format='png';$qualite=128;}
@ -170,7 +170,7 @@ function image_format($img, $format='png') {
// Transforme l'image en PNG transparent // Transforme l'image en PNG transparent
// alpha = 0: aucune transparence // alpha = 0: aucune transparence
// alpha = 127: completement transparent // alpha = 127: completement transparent
// http://doc.spip.org/@image_alpha // http://code.spip.net/@image_alpha
function image_alpha($im, $alpha = 63) function image_alpha($im, $alpha = 63)
{ {
$fonction = array('image_alpha', func_get_args()); $fonction = array('image_alpha', func_get_args());
@ -231,7 +231,24 @@ function image_alpha($im, $alpha = 63)
} }
// http://doc.spip.org/@image_recadre /**
*
* http://code.spip.net/@image_recadre
*
* @param string $im
* @param string|int $width
* largeur du recadrage
* ou ratio sous la forme "16:9"
* @param string|int $height
* hauteur du recadrage
* ou "+" (agrandir) ou "-" (reduire) si un ratio est fourni pour width
* @param string $position
* center, left, right, top, bottom, ou combinaisons ("top left")
* @param string $background_color
* couleur de fond si on agrandit l'image
* @return string
* balise image recadree
*/
function image_recadre($im,$width,$height,$position='center', $background_color='white') function image_recadre($im,$width,$height,$position='center', $background_color='white')
{ {
$fonction = array('image_recadre', func_get_args()); $fonction = array('image_recadre', func_get_args());
@ -248,6 +265,23 @@ function image_recadre($im,$width,$height,$position='center', $background_color=
return _image_tag_changer_taille($im,$width,$height); 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 ($width==0) $width=$x_i;
if ($height==0) $height=$y_i; if ($height==0) $height=$y_i;
@ -415,7 +449,7 @@ function image_recadre_mini($im)
} }
// http://doc.spip.org/@image_flip_vertical // http://code.spip.net/@image_flip_vertical
function image_flip_vertical($im) function image_flip_vertical($im)
{ {
$fonction = array('image_flip_vertical', func_get_args()); $fonction = array('image_flip_vertical', func_get_args());
@ -454,7 +488,7 @@ function image_flip_vertical($im)
return _image_ecrire_tag($image,array('src'=>$dest)); 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) function image_flip_horizontal($im)
{ {
$fonction = array('image_flip_horizontal', func_get_args()); $fonction = array('image_flip_horizontal', func_get_args());
@ -492,7 +526,7 @@ function image_flip_horizontal($im)
return _image_ecrire_tag($image,array('src'=>$dest)); 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="") { function image_masque($im, $masque, $pos="") {
// Passer, en plus de l'image d'origine, // Passer, en plus de l'image d'origine,
// une image de "masque": un fichier PNG24 transparent. // une image de "masque": un fichier PNG24 transparent.
@ -904,7 +938,7 @@ function image_masque($im, $masque, $pos="") {
// un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont // un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont
// ponderees pour obtenir le niveau de gris; // ponderees pour obtenir le niveau de gris;
// on peut ici regler cette ponderation en "pour mille" // 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) function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114)
{ {
$fonction = array('image_nb', func_get_args()); $fonction = array('image_nb', func_get_args());
@ -960,7 +994,7 @@ function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114)
return _image_ecrire_tag($image,array('src'=>$dest)); 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) function image_flou($im,$niveau=3)
{ {
// Il s'agit d'une modification du script blur qu'on trouve un peu partout: // Il s'agit d'une modification du script blur qu'on trouve un peu partout:
@ -1088,7 +1122,7 @@ function image_flou($im,$niveau=3)
return _image_ecrire_tag($image,array('src'=>$dest,'width'=>($x_i+$niveau),'height'=>($y_i+$niveau))); 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) { function image_RotateBicubic($src_img, $angle, $bicubic=0) {
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');
@ -1267,7 +1301,7 @@ function image_RotateBicubic($src_img, $angle, $bicubic=0) {
// permet de faire tourner une image d'un angle quelconque // permet de faire tourner une image d'un angle quelconque
// la fonction "crop" n'est pas implementee... // 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) function image_rotation($im, $angle, $crop=false)
{ {
$fonction = array('image_rotation', func_get_args()); $fonction = array('image_rotation', func_get_args());
@ -1282,7 +1316,7 @@ function image_rotation($im, $angle, $crop=false)
if ($creer) { if ($creer) {
$effectuer_gd = true; $effectuer_gd = true;
if(is_callable(array('Imagick','rotateImage'))){ if(method_exists('Imagick','rotateImage')){
$imagick = new Imagick(); $imagick = new Imagick();
$imagick->readImage($im); $imagick->readImage($im);
$imagick->rotateImage(new ImagickPixel('none'), $angle); $imagick->rotateImage(new ImagickPixel('none'), $angle);
@ -1338,7 +1372,7 @@ function image_rotation($im, $angle, $crop=false)
// Permet d'appliquer un filtre php_imagick a une image // Permet d'appliquer un filtre php_imagick a une image
// par exemple: [(#LOGO_ARTICLE|image_imagick{imagick_wave,20,60})] // par exemple: [(#LOGO_ARTICLE|image_imagick{imagick_wave,20,60})]
// liste des fonctions: http://www.linux-nantes.org/~fmonnier/doc/imagick/ // 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 () { function image_imagick () {
$tous = func_get_args(); $tous = func_get_args();
$img = $tous[0]; $img = $tous[0];
@ -1378,7 +1412,7 @@ function image_imagick () {
// Permet de rendre une image // Permet de rendre une image
// plus claire (gamma > 0) // plus claire (gamma > 0)
// ou plus foncee (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){ function image_gamma($im, $gamma = 0){
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');
$fonction = array('image_gamma', func_get_args()); $fonction = array('image_gamma', func_get_args());
@ -1430,7 +1464,7 @@ function image_gamma($im, $gamma = 0){
// On peut fixer les valeurs RGB // On peut fixer les valeurs RGB
// de la couleur "complementaire" pour forcer une dominante // de la couleur "complementaire" pour forcer une dominante
//function image_sepia($im, $dr = 137, $dv = 111, $db = 94) //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"){ function image_sepia($im, $rgb = "896f5e"){
include_spip('filtres/images_lib'); include_spip('filtres/images_lib');
@ -1496,7 +1530,7 @@ function image_sepia($im, $rgb = "896f5e"){
// Renforcer la nettete d'une image // 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) function image_renforcement($im, $k=0.5)
{ {
$fonction = array('image_flou', func_get_args()); $fonction = array('image_flou', func_get_args());

View file

@ -18,7 +18,7 @@ include_spip('inc/filtres_images_mini');
// Image typographique // Image typographique
// Fonctions pour l'arabe // Fonctions pour l'arabe
// http://doc.spip.org/@rtl_mb_ord // http://code.spip.net/@rtl_mb_ord
function rtl_mb_ord($char){ function rtl_mb_ord($char){
if (($c = ord($char)) < 216) return $c; if (($c = ord($char)) < 216) return $c;
@ -32,7 +32,7 @@ function rtl_mb_ord($char){
} }
// http://doc.spip.org/@rtl_reverse // http://code.spip.net/@rtl_reverse
function rtl_reverse($mot, $rtl_global) { function rtl_reverse($mot, $rtl_global) {
$rtl_prec = $rtl_global; $rtl_prec = $rtl_global;
@ -87,7 +87,7 @@ function rtl_reverse($mot, $rtl_global) {
// http://doc.spip.org/@rtl_visuel // http://code.spip.net/@rtl_visuel
function rtl_visuel($texte, $rtl_global) { function rtl_visuel($texte, $rtl_global) {
// hebreu + arabe: 54928 => 56767 // hebreu + arabe: 54928 => 56767
// hebreu + presentation A: 15707294 => 15710140 // hebreu + presentation A: 15707294 => 15710140
@ -395,7 +395,7 @@ function rtl_visuel($texte, $rtl_global) {
} }
// http://doc.spip.org/@printWordWrapped // http://code.spip.net/@printWordWrapped
function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align="left", $hauteur_ligne = 0) { function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align="left", $hauteur_ligne = 0) {
static $memps = array(); static $memps = array();
@ -508,7 +508,7 @@ function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text
//array imagefttext ( resource image, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo] ) //array 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 ) //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() { function produire_image_typo() {
/* /*
arguments autorises: arguments autorises:

View file

@ -41,13 +41,13 @@ function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cre
// Pour assurer la compatibilite avec les anciens nom des filtres image_xxx // Pour assurer la compatibilite avec les anciens nom des filtres image_xxx
// commencent par "image_" // commencent par "image_"
// http://doc.spip.org/@reduire_image // http://code.spip.net/@reduire_image
function reduire_image($texte, $taille = -1, $taille_y = -1) { function reduire_image($texte, $taille = -1, $taille_y = -1) {
return filtrer('image_graver', return filtrer('image_graver',
filtrer('image_reduire',$texte, $taille, $taille_y) 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) { function valeurs_image_trans($img, $effet, $forcer_format = false) {
include_spip('inc/filtres_images_lib_mini'); include_spip('inc/filtres_images_lib_mini');
return _image_valeurs_trans($img, $effet, $forcer_format = false); return _image_valeurs_trans($img, $effet, $forcer_format = false);

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="images" prefix="images"
categorie="multimedia" categorie="multimedia"
version="1.1.9" version="1.1.10"
etat="stable" etat="stable"
compatibilite="[3.0.0;3.0.*]" compatibilite="[3.0.0;3.0.*]"
logo="images/image_filtre-32.png" logo="images/image_filtre-32.png"

View file

@ -33,12 +33,12 @@
$essais = array ( $essais = array (
0 => 0 =>
array ( array (
0 => '739cc8', 0 => '759bc8',
1 => url_absolue(find_in_path('tests/degrade-bleu.jpg'),$GLOBALS['meta']['adresse_site'].'/'), 1 => url_absolue(find_in_path('tests/degrade-bleu.jpg'),$GLOBALS['meta']['adresse_site'].'/'),
), ),
1 => 1 =>
array ( array (
0 => '739cc8', 0 => '759bc8',
1 => find_in_path('tests/degrade-bleu.jpg'), 1 => find_in_path('tests/degrade-bleu.jpg'),
), ),
); );
@ -49,4 +49,4 @@
?> ?>

View file

@ -15,7 +15,7 @@ include_spip('inc/modifier');
// Nota: quand on edite un forum existant, il est de bon ton d'appeler // Nota: quand on edite un forum existant, il est de bon ton d'appeler
// au prealable conserver_original($id_forum) // au prealable conserver_original($id_forum)
// http://doc.spip.org/@revision_forum // http://code.spip.net/@revision_forum
if(!function_exists('revision_forum')){ if(!function_exists('revision_forum')){
function revision_forum($id_forum, $c=false) { function revision_forum($id_forum, $c=false) {
@ -45,7 +45,7 @@ if(!function_exists('revision_forum')){
), ),
$c); $c);
$t = $t["id_thread"]; $id_thread = $t["id_thread"];
$cles = array(); $cles = array();
foreach (array('id_objet', 'objet') as $k) { foreach (array('id_objet', 'objet') as $k) {
if (isset($c[$k]) AND $c[$k]) $cles[$k] = $c[$k]; if (isset($c[$k]) AND $c[$k]) $cles[$k] = $c[$k];
@ -54,15 +54,15 @@ if(!function_exists('revision_forum')){
// Modification des id_article etc // Modification des id_article etc
// (non autorise en standard mais utile pour des crayons) // (non autorise en standard mais utile pour des crayons)
// on deplace tout le thread {sauf les originaux}. // on deplace tout le thread {sauf les originaux}.
if (count($cles) AND $t) { if (count($cles) AND $id_thread) {
spip_log("update thread id_thread=$t avec ".var_export($cles,1),'forum.'. _LOG_INFO_IMPORTANTE); spip_log("update thread id_thread=$id_thread avec ".var_export($cles,1),'forum.'. _LOG_INFO_IMPORTANTE);
sql_updateq("spip_forum", $cles, "id_thread=".intval($t)." AND statut!='original'"); sql_updateq("spip_forum", $cles, "id_thread=".$id_thread." AND statut!='original'");
// on n'affecte pas $r, car un deplacement ne change pas l'auteur // on n'affecte pas $r, car un deplacement ne change pas l'auteur
} }
// s'il y a vraiment eu une modif, on // s'il y a vraiment eu une modif et que le message est public
// enregistre le nouveau date_thread // on enregistre le nouveau date_thread
if ($err==='') { if ($err==='' AND $t['statut'] == 'publie') {
// on ne stocke ni le numero IP courant ni le nouvel id_auteur // on ne stocke ni le numero IP courant ni le nouvel id_auteur
// dans le message modifie (trop penible a l'usage) ; mais du // dans le message modifie (trop penible a l'usage) ; mais du
// coup attention a la responsabilite editoriale // coup attention a la responsabilite editoriale
@ -71,7 +71,7 @@ if(!function_exists('revision_forum')){
*/ */
// & meme ca ca pourrait etre optionnel // & meme ca ca pourrait etre optionnel
sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=".$t); sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=".$id_thread);
} }
} }
} }

View file

@ -12,7 +12,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return; 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) { function action_instituer_forum_dist($arg=null) {
if (is_null($arg)){ if (is_null($arg)){

View file

@ -12,7 +12,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return; 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) { function action_instituer_lot_forum_dist($arg=null) {
if (is_null($arg)){ if (is_null($arg)){

View file

@ -29,7 +29,7 @@ include_spip('inc/forum');
* #FORMULAIRE_FORUM seul calcule (objet, id_objet) depuis la boucle parente * #FORMULAIRE_FORUM seul calcule (objet, id_objet) depuis la boucle parente
* #FORMULAIRE_FORUM{#SELF} pour forcer l'url de retour * #FORMULAIRE_FORUM{#SELF} pour forcer l'url de retour
* #FORMULAIRE_FORUM{#SELF, article, 3} pour forcer l'objet et son identifiant * #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 * @param Object $p
* @return Object * @return Object
@ -81,7 +81,7 @@ function balise_FORMULAIRE_FORUM ($p) {
/** /**
* Chercher l'objet/id_objet et la configuration du forum * 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 $args
* @param array $context_compil * @param array $context_compil

View file

@ -29,7 +29,7 @@ include_spip('inc/forum');
* #FORMULAIRE_FORUM_PRIVE seul calcule (objet, id_objet) depuis la boucle parente * #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} pour forcer l'url de retour
* #FORMULAIRE_FORUM_PRIVE{#SELF, article, 3} pour forcer l'objet et son identifiant * #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 * @param Object $p
* @return Object * @return Object
@ -79,7 +79,7 @@ function balise_FORMULAIRE_FORUM_PRIVE ($p) {
/** /**
* Chercher l'objet/id_objet et la configuration du forum * 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 $args
* @param array $context_compil * @param array $context_compil

View file

@ -27,6 +27,7 @@ function forum_declarer_tables_interfaces($interfaces){
$interfaces['exceptions_des_tables']['forums']['email']='email_auteur'; $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 // 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']['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']['titre_mot'] = array('spip_mots','titre');
$interfaces['exceptions_des_jointures']['spip_forum']['type_mot'] = array('spip_mots','type'); $interfaces['exceptions_des_jointures']['spip_forum']['type_mot'] = array('spip_mots','type');

View file

@ -13,7 +13,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
// Recuperer le reglage des forums publics de l'article x // 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') { function get_forums_publics($id_objet=0, $objet='article') {
if ($objet=='article' AND $id_objet) { if ($objet=='article' AND $id_objet) {

View file

@ -26,7 +26,7 @@
<input type='hidden' name='nom_site' value="#ENV{nom_site}" /> <input type='hidden' name='nom_site' value="#ENV{nom_site}" />
[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />] [<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
[(#INCLURE{fond=formulaires/inc-forum_ajouter_mot, ajouter_mot})] [(#INCLURE{fond=formulaires/inc-forum_ajouter_mot, ajouter_mot})]
(#ENV*{erreurs}|table_valeur{previsu}) (#ENV**{erreurs}|table_valeur{previsu})
</div> </div>
</form>] </form>]

View file

@ -162,7 +162,7 @@ function formulaires_forum_charger_dist($objet, $id_objet, $id_forum,
* Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment * Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment
* si $afficher_previsu = 'non') * si $afficher_previsu = 'non')
* *
* http://doc.spip.org/@forum_fichier_tmp * http://code.spip.net/@forum_fichier_tmp
* *
* @param $arg * @param $arg
* @return int * @return int
@ -211,6 +211,7 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
$erreurs = array(); $erreurs = array();
$doc = array();
// desactiver id_rubrique si un id_article ou autre existe dans le contexte // desactiver id_rubrique si un id_article ou autre existe dans le contexte
// if ($id_article OR $id_breve OR $id_forum OR $id_syndic) // if ($id_article OR $id_breve OR $id_forum OR $id_syndic)
@ -219,33 +220,34 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
// stocker un eventuel document dans un espace temporaire // stocker un eventuel document dans un espace temporaire
// portant la cle du formulaire ; et ses metadonnees avec // portant la cle du formulaire ; et ses metadonnees avec
if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))
session_set('tmp_forum_document',
sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));
$tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];
$doc = &$_FILES['ajouter_document'];
if (isset($_FILES['ajouter_document']) if (isset($_FILES['ajouter_document'])
AND $_FILES['ajouter_document']['tmp_name'] AND $_FILES['ajouter_document']['tmp_name']){
){
// securite : $acceptes = forum_documents_acceptes();
// verifier si on possede la cle (ie on est autorise a poster) if (
// (sinon tant pis) ; cf. charger.php pour la definition de la cle // si on a poste un $_FILES mais que l'option n'est pas active : cas produit par les bots qui spamment automatiquement
if (_request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")){ !count($acceptes)
// securite :
// verifier si on possede la cle (ie on est autorise a poster)
// (sinon tant pis) ; cf. charger.php pour la definition de la cle
OR _request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")
){
$erreurs['document_forum'] = _T('forum:documents_interdits_forum'); $erreurs['document_forum'] = _T('forum:documents_interdits_forum');
unset($_FILES['ajouter_document']); unset($_FILES['ajouter_document']);
} }
else { else {
if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))
session_set('tmp_forum_document', sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));
$tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];
$doc = &$_FILES['ajouter_document'];
include_spip('inc/joindre_document'); include_spip('inc/joindre_document');
include_spip('action/ajouter_documents'); include_spip('action/ajouter_documents');
list($extension, $doc['name']) = fixer_extension_document($doc); list($extension, $doc['name']) = fixer_extension_document($doc);
$acceptes = forum_documents_acceptes();
if (!in_array($extension, $acceptes)){ if (!in_array($extension, $acceptes)){
# normalement on n'arrive pas ici : pas d'upload si aucun format $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => join(', ', $acceptes)));
if (!$formats = join(', ', $acceptes)){
$formats = '-'; //_L('aucun');
}
$erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => $formats));
} }
else { else {
include_spip('inc/getdocument'); include_spip('inc/getdocument');
@ -261,19 +263,22 @@ function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum,
if (isset($erreurs['document_forum'])){ if (isset($erreurs['document_forum'])){
spip_unlink($tmp . '.bin'); spip_unlink($tmp . '.bin');
unset ($_FILES['ajouter_document']); unset ($_FILES['ajouter_document']);
} } else {
else {
$doc['tmp_name'] = $tmp . '.bin'; $doc['tmp_name'] = $tmp . '.bin';
ecrire_fichier($tmp . '.txt', serialize($doc)); ecrire_fichier($tmp . '.txt', serialize($doc));
} }
} }
} // restaurer le document uploade au tour precedent }
elseif (file_exists($tmp . '.bin')){ // restaurer/supprimer le document eventuellement uploade au tour precedent
elseif (isset($GLOBALS['visiteur_session']['tmp_forum_document'])
AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']
AND file_exists($tmp . '.bin')){
if (_request('supprimer_document_ajoute')){ if (_request('supprimer_document_ajoute')){
spip_unlink($tmp . '.bin'); spip_unlink($tmp . '.bin');
spip_unlink($tmp . '.txt'); spip_unlink($tmp . '.txt');
} }
elseif (lire_fichier($tmp . '.txt', $meta)){ elseif (lire_fichier($tmp . '.txt', $meta)){
$doc = &$_FILES['ajouter_document'];
$doc = @unserialize($meta); $doc = @unserialize($meta);
} }
} }
@ -359,7 +364,7 @@ function forum_documents_acceptes(){
/** /**
* Preparer la previsu d'un message de forum * Preparer la previsu d'un message de forum
* *
* http://doc.spip.org/@inclure_previsu * http://code.spip.net/@inclure_previsu
* *
* @param string $texte * @param string $texte
* @param string $titre * @param string $titre

View file

@ -73,8 +73,12 @@ function formulaires_forum_prive_verifier_dist($objet, $id_objet, $id_forum, $af
$erreurs = array(); $erreurs = array();
if (strlen($texte = _request('texte')) < 10 AND $GLOBALS['meta']['forums_texte'] == 'oui') $min_length = (defined('_FORUM_LONGUEUR_MINI') ? _FORUM_LONGUEUR_MINI : 10);
$erreurs['texte'] = _T('forum:forum_attention_dix_caracteres'); 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') else if (defined('_FORUM_LONGUEUR_MAXI')
AND _FORUM_LONGUEUR_MAXI > 0 AND _FORUM_LONGUEUR_MAXI > 0
AND strlen($texte) > _FORUM_LONGUEUR_MAXI) AND strlen($texte) > _FORUM_LONGUEUR_MAXI)
@ -83,7 +87,6 @@ function formulaires_forum_prive_verifier_dist($objet, $id_objet, $id_forum, $af
'compte' => strlen($texte), 'compte' => strlen($texte),
'max' => _FORUM_LONGUEUR_MAXI 'max' => _FORUM_LONGUEUR_MAXI
)); ));
if (strlen($titre=_request('titre')) < 3 if (strlen($titre=_request('titre')) < 3
AND $GLOBALS['meta']['forums_titre'] == 'oui') AND $GLOBALS['meta']['forums_titre'] == 'oui')
$erreurs['titre'] = _T('forum:forum_attention_trois_caracteres'); $erreurs['titre'] = _T('forum:forum_attention_trois_caracteres');

View file

@ -31,7 +31,7 @@ function autoriser_forumreactions_menu_dist($faire, $type='', $id=0, $qui = NULL
// Moderer le forum ? // Moderer le forum ?
// = modifier l'objet correspondant (si forum attache a un objet) // = modifier l'objet correspondant (si forum attache a un objet)
// = droits par defaut sinon (admin complet pour moderation complete) // = 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) { function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) {
return $type ? autoriser('modifier', $type, $id, $qui, $opt):autoriser('moderer', 'forum', 0, $qui, $opt); return $type ? autoriser('modifier', $type, $id, $qui, $opt):autoriser('moderer', 'forum', 0, $qui, $opt);
} }
@ -63,14 +63,14 @@ function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt){
// Modifier un forum ? // Modifier un forum ?
// = jamais ! // = 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) { function autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt) {
return false; return false;
} }
// Consulter le forum des admins ? // Consulter le forum des admins ?
// admins y compris restreints // 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) { function autoriser_forum_admin_dist($faire, $type, $id, $qui, $opt) {
return $qui['statut'] == '0minirezo'; return $qui['statut'] == '0minirezo';
} }
@ -82,6 +82,38 @@ function autoriser_forum_autoassocierdocument_dist($faire, $type, $id, $qui, $op
return false; return false;
} }
/**
* Autorisation d'association de documents sur des forum
*
* Toujours
*
* @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_forum_associerdocuments_dist($faire, $type, $id, $qui, $opt) {
return true;
}
/**
* Autorisation de dissociation de documents sur des forum
*
* Toujours
*
* @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_forum_dissocierdocuments_dist($faire, $type, $id, $qui, $opt) {
return true;
}
/** /**
* Autoriser a participer au forum des admins * Autoriser a participer au forum des admins
* *

View file

@ -125,7 +125,7 @@ function forum_afficher_fiche_objet($flux){
else else
$n_forums = 0; $n_forums = 0;
if ($n_forums) 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; return $flux;
} }

View file

@ -13,45 +13,50 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/actions'); include_spip('inc/actions');
// recuperer le critere SQL qui selectionne nos forums /**
// http://doc.spip.org/@critere_statut_controle_forum * recuperer le critere SQL qui selectionne nos forums
function critere_statut_controle_forum($type, $id_rubrique=0, $recherche='') { * 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_secteur) {
if (!$id_rubrique) {
$from = 'spip_forum AS F'; $from = 'spip_forum AS F';
$where = ""; $where = "";
$and = ""; $and = "";
} else { } else {
if (strpos($id_rubrique,',')) if (!is_array($id_secteur)){
$eq = " IN ($id_rubrique)"; $id_secteur = explode(',',$id_secteur);
else $eq = "=$id_rubrique"; }
$from = 'spip_forum AS F, spip_articles AS A'; $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 '; $and = ' AND ';
} }
switch ($type) { switch ($type) {
case 'public': case 'public':
$and .= "F.statut IN ('publie', 'off', 'prop', 'spam') AND F.texte!=''"; $and .= "F.statut IN ('publie', 'off', 'prop', 'spam') AND F.texte!=''";
break; break;
case 'prop': case 'prop':
$and .= "F.statut='prop'"; $and .= "F.statut='prop'";
break; break;
case 'spam': case 'spam':
$and .= "F.statut='spam'"; $and .= "F.statut='spam'";
break; break;
case 'interne': case 'interne':
$and .= "F.statut IN ('prive', 'privrac', 'privoff', 'privadm') AND F.texte!=''"; $and .= "F.statut IN ('prive', 'privrac', 'privoff', 'privadm') AND F.texte!=''";
break; break;
case 'vide': case 'vide':
$and .= "F.statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND F.texte=''"; $and .= "F.statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND F.texte=''";
break; break;
default: default:
$where = '0=1'; $where = '0=1';
$and =''; $and ='';
break; break;
} }
if ($recherche) { if ($recherche) {
@ -75,7 +80,7 @@ function critere_statut_controle_forum($type, $id_rubrique=0, $recherche='') {
// obsolete, remplace par l'appel systematique a 2 invalideurs : // obsolete, remplace par l'appel systematique a 2 invalideurs :
// - forum/id_forum // - forum/id_forum
// - objet/id_objet // - objet/id_objet
// http://doc.spip.org/@calcul_index_forum // http://code.spip.net/@calcul_index_forum
function calcul_index_forum($objet,$id_objet) { function calcul_index_forum($objet,$id_objet) {
return substr($objet,0,1).$id_objet; return substr($objet,0,1).$id_objet;
} }
@ -83,7 +88,7 @@ function calcul_index_forum($objet,$id_objet) {
// //
// Recalculer tous les threads // Recalculer tous les threads
// //
// http://doc.spip.org/@calculer_threads // http://code.spip.net/@calculer_threads
function calculer_threads() { function calculer_threads() {
// fixer les id_thread des debuts de discussion // fixer les id_thread des debuts de discussion
sql_update('spip_forum', array('id_thread'=>'id_forum'), "id_parent=0"); sql_update('spip_forum', array('id_thread'=>'id_forum'), "id_parent=0");
@ -107,7 +112,7 @@ function calculer_threads() {
} }
// Calculs des URLs des forums (pour l'espace public) // 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){ function racine_forum($id_forum){
if (!$id_forum = intval($id_forum)) return false; if (!$id_forum = intval($id_forum)) return false;
@ -123,7 +128,7 @@ function racine_forum($id_forum){
} }
// http://doc.spip.org/@parent_forum // http://code.spip.net/@parent_forum
function parent_forum($id_forum) { function parent_forum($id_forum) {
if (!$id_forum = intval($id_forum)) return; if (!$id_forum = intval($id_forum)) return;
$row = sql_fetsel("id_parent, objet, id_objet", "spip_forum", "id_forum=".$id_forum); $row = sql_fetsel("id_parent, objet, id_objet", "spip_forum", "id_forum=".$id_forum);
@ -149,7 +154,7 @@ function generer_url_forum_dist($id_forum, $args='', $ancre='') {
} }
// http://doc.spip.org/@generer_url_forum_parent // http://code.spip.net/@generer_url_forum_parent
function generer_url_forum_parent($id_forum) { function generer_url_forum_parent($id_forum) {
if ($id_forum = intval($id_forum)) { if ($id_forum = intval($id_forum)) {
list($type, $id) = parent_forum($id_forum); list($type, $id) = parent_forum($id_forum);
@ -162,7 +167,7 @@ function generer_url_forum_parent($id_forum) {
// Quand on edite un forum, on tient a conserver l'original // Quand on edite un forum, on tient a conserver l'original
// sous forme d'un forum en reponse, de statut '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) { function conserver_original($id_forum) {
$s = sql_fetsel("id_forum", "spip_forum", "id_parent=".intval($id_forum)." AND statut='original'"); $s = sql_fetsel("id_forum", "spip_forum", "id_parent=".intval($id_forum)." AND statut='original'");
@ -184,7 +189,7 @@ function conserver_original($id_forum) {
} }
// appelle conserver_original(), puis modifie le contenu via l'API inc/modifier // 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) { function enregistre_et_modifie_forum($id_forum, $c=false) {
if ($err = conserver_original($id_forum)) { if ($err = conserver_original($id_forum)) {
spip_log("erreur de sauvegarde de l'original, $err"); spip_log("erreur de sauvegarde de l'original, $err");
@ -242,7 +247,7 @@ function forum_recuperer_titre_dist($objet, $id_objet, $id_forum=0, $publie = tr
* pri: a priori, doivent etre valides par un admin * pri: a priori, doivent etre valides par un admin
* abo: les personnes doivent au prealable etre identifiees * abo: les personnes doivent au prealable etre identifiees
* *
* http://doc.spip.org/@controler_forum * http://code.spip.net/@controler_forum
* *
* @param string $objet * @param string $objet
* objet a tester * objet a tester
@ -266,7 +271,7 @@ function controler_forum($objet, $id_objet) {
/** /**
* Verifier la presence du jeton de secu post previsu * 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 * @return bool
*/ */
function forum_insert_noprevisu(){ function forum_insert_noprevisu(){
@ -320,7 +325,7 @@ function forum_get_objets_depuis_env() {
} }
// http://doc.spip.org/@reduce_strlen // http://code.spip.net/@reduce_strlen
function reduce_strlen($n, $c) function reduce_strlen($n, $c)
{ {
return $n - (is_string($c) ? strlen($c) : 0); return $n - (is_string($c) ? strlen($c) : 0);

View file

@ -17,7 +17,7 @@ include_spip('inc/actions');
// Ce fichier est inclus par dist/formulaires/forum.php // 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) function mots_du_forum($ajouter_mot, $id_message)
{ {
include_spip('action/editer_mot'); include_spip('action/editer_mot');
@ -26,7 +26,7 @@ function mots_du_forum($ajouter_mot, $id_message)
// http://doc.spip.org/@tracer_erreur_forum // http://code.spip.net/@tracer_erreur_forum
function tracer_erreur_forum($type='') { function tracer_erreur_forum($type='') {
spip_log("erreur forum ($type): ".print_r($_POST, true)); spip_log("erreur forum ($type): ".print_r($_POST, true));
@ -43,7 +43,7 @@ function tracer_erreur_forum($type='') {
/** /**
* Un parametre permet de forcer le statut (exemple: plugin antispam) * 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 $objet
* @param $id_objet * @param $id_objet
@ -98,7 +98,7 @@ function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = NUL
} }
// http://doc.spip.org/@forum_insert_base // http://code.spip.net/@forum_insert_base
function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false) function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false)
{ {
@ -164,7 +164,7 @@ function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_m
} }
// http://doc.spip.org/@forum_insert_statut // http://code.spip.net/@forum_insert_statut
function forum_insert_statut($champs, $forcer_statut=NULL) function forum_insert_statut($champs, $forcer_statut=NULL)
{ {
include_spip('inc/forum'); include_spip('inc/forum');

View file

@ -13,7 +13,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* dans ecrire/inc/forum_insert.php ; ici on va notifier ceux qui ne l'ont * 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 * pas ete a la notification forumposte (sachant que les deux peuvent se
* suivre si le forum est valide directement ('pos' ou 'abo') * 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 string $quoi
* @param int $id_forum * @param int $id_forum

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="forum" prefix="forum"
categorie="communication" categorie="communication"
version="1.8.34" version="1.8.41"
etat="stable" etat="stable"
compatibilite="[3.0.0;3.0.*]" compatibilite="[3.0.0;3.0.*]"
logo="prive/themes/spip/images/forum-32.png" logo="prive/themes/spip/images/forum-32.png"

View file

@ -61,22 +61,22 @@
#FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax} #FORMULAIRE_RECHERCHE_ECRIRE{#GET{self},ajax}
[<h2><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h2>] [<h2><:resultats_recherche:> &#171;&nbsp;(#ENV{recherche})&nbsp;&#187;</h2>]
<B_forum> <B_forums>
<h3>[(#GRAND_TOTAL|singulier_ou_pluriel{forum:info_1_message_forum,forum:info_nb_messages_forum}|sinon{<:forum:aucun_message_forum:>})]</h3> <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> <div class="clear"></div>
[<p class='pagination'>(#PAGINATION{prive})</p>] [<p class='pagination'>(#PAGINATION{prive})</p>]
<ul class='liste-items forums'> <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' <li class="item forum[ (#EXPOSE)] statut_#STATUT[ (#COMPTEUR_BOUCLE|alterner{'','odd'})]" id='forum#ID_FORUM' data-id='#ID_FORUM'
onclick="jQuery(this).toggleClass('hover');"> onclick="jQuery(this).toggleClass('hover');">
[(#INCLURE{fond=prive/modeles/forum, id_forum, self})] [(#INCLURE{fond=prive/modeles/forum, id_forum, self})]
</li> </li>
</BOUCLE_forum> </BOUCLE_forums>
</ul> </ul>
[<p class='pagination'>(#PAGINATION{prive})</p>] [<p class='pagination'>(#PAGINATION{prive})</p>]
</B_forum> </B_forums>
<h3><:forum:aucun_message_forum:></h3> <h3><:forum:aucun_message_forum:></h3>
<//B_forum> <//B_forums>

View file

@ -8,19 +8,19 @@
<li>[(#GET{self}|parametre_url{statut,''}|lien_ou_expose{<:forum:messages_tous:>,#ENV{statut,''}|=={''},ajax})]</li> <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'}} #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> [(#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'}} #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> [(#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'}} #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> [(#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'}} #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> [(#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> </ul>
</div> </div>

View file

@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// //
// <BOUCLE(FORUMS)> // <BOUCLE(FORUMS)>
// //
// http://doc.spip.org/@boucle_FORUMS_dist // http://code.spip.net/@boucle_FORUMS_dist
function boucle_FORUMS_dist($id_boucle, &$boucles) { function boucle_FORUMS_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle]; $boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table; $id_table = $boucle->id_table;
@ -36,7 +36,7 @@ function boucle_FORUMS_dist($id_boucle, &$boucles) {
// {meme_parent} // {meme_parent}
// http://www.spip.net/@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) { function critere_FORUMS_meme_parent_dist($idb, &$boucles, $crit) {
global $exceptions_des_tables; global $exceptions_des_tables;
$boucle = &$boucles[$idb]; $boucle = &$boucles[$idb];
@ -79,7 +79,7 @@ function public_critere_secteur_forums_dist($idb, &$boucles, $val, $crit)
// par exemple en tete de inc-forums.html ; impossible donc de // par exemple en tete de inc-forums.html ; impossible donc de
// savoir a quel objet elle va s'appliquer, ca dependra du contexte // 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) { function balise_PARAMETRES_FORUM_dist($p) {
// s'il y a un id_article dans le contexte, regarder le statut // s'il y a un id_article dans le contexte, regarder le statut
@ -213,7 +213,7 @@ function quete_accepter_forum($id_article) {
// pour une boucle forum sans id_article ou id_rubrique donne par le contexte // 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". // 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) { function lang_parametres_forum($qs, $lang) {
if (is_array($lang) AND preg_match(',id_([a-z_]+)=([0-9]+),', $qs, $r)) { if (is_array($lang) AND preg_match(',id_([a-z_]+)=([0-9]+),', $qs, $r)) {
$id = 'id_' . $r[1]; $id = 'id_' . $r[1];
@ -231,7 +231,7 @@ function lang_parametres_forum($qs, $lang) {
// Pour que le compilo ajoute un invalideur a la balise #PARAMETRES_FORUM // Pour que le compilo ajoute un invalideur a la balise #PARAMETRES_FORUM
// Noter l'invalideur de la page contenant ces parametres, // Noter l'invalideur de la page contenant ces parametres,
// en cas de premier post sur le forum // 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) { function code_invalideur_forums_dist($p, $code) {
return $code; return $code;
} }

View file

@ -12,7 +12,7 @@
if (!defined("_ECRIRE_INC_VERSION")) return; 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='') { function urls_generer_url_ecrire_forum_dist($id, $args='', $ancre='', $public=null, $connect='') {
$a = "id_forum=" . intval($id); $a = "id_forum=" . intval($id);
if (is_null($public) AND !$connect) if (is_null($public) AND !$connect)

View file

@ -3,7 +3,7 @@
The following rules are the styles that are consistant between themes. The following rules are the styles that are consistant between themes.
Avoid changing this area to maintain compatability with future versions of ColorBox. Avoid changing this area to maintain compatability with future versions of ColorBox.
*/ */
#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;} #colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;} #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;} #cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;} #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
@ -41,13 +41,13 @@
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;} #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;}
#cboxPrevious{left:0px; background-position: -51px -25px;} #cboxPrevious{left:0px; background-position: -51px -25px;}
#cboxPrevious.hover{background-position:-51px 0px;} #cboxPrevious:hover{background-position:-51px 0px;}
#cboxNext{left:27px; background-position:-75px -25px;} #cboxNext{left:27px; background-position:-75px -25px;}
#cboxNext.hover{background-position:-75px 0px;} #cboxNext:hover{background-position:-75px 0px;}
#cboxClose{right:0; background-position:-100px -25px;} #cboxClose{right:0; background-position:-100px -25px;}
#cboxClose.hover{background-position:-100px 0px;} #cboxClose:hover{background-position:-100px 0px;}
.cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; right:27px;} .cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; right:27px;}
.cboxSlideshow_on #cboxSlideshow.hover{background-position:-150px 0px;} .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
.cboxSlideshow_off #cboxSlideshow{background-position:-125px -25px; right:27px;} .cboxSlideshow_off #cboxSlideshow{background-position:-125px -25px; right:27px;}
.cboxSlideshow_off #cboxSlideshow.hover{background-position:-125px 0px;} .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}

View file

@ -3,6 +3,7 @@
The following rules are the styles that are consistant between themes. The following rules are the styles that are consistant between themes.
Avoid changing this area to maintain compatability with future versions of ColorBox. Avoid changing this area to maintain compatability with future versions of ColorBox.
*/ */
#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;} #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;} #cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;} #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
@ -40,13 +41,13 @@
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;} #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) 0px 0px no-repeat; width:23px; height:23px; text-indent:-9999px;}
#cboxPrevious{right:0px; background-position: -75px -25px;} #cboxPrevious{right:0px; background-position: -75px -25px;}
#cboxPrevious.hover{background-position:-75px 0px;} #cboxPrevious:hover{background-position:-75px 0px;}
#cboxNext{right:27px; background-position:-51px -25px;} #cboxNext{right:27px; background-position:-51px -25px;}
#cboxNext.hover{background-position:-51px 0px;} #cboxNext:hover{background-position:-51px 0px;}
#cboxClose{left:0; background-position:-100px -25px;} #cboxClose{left:0; background-position:-100px -25px;}
#cboxClose.hover{background-position:-100px 0px;} #cboxClose:hover{background-position:-100px 0px;}
.cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; left:27px;} .cboxSlideshow_on #cboxSlideshow{background-position:-150px -25px; left:27px;}
.cboxSlideshow_on #cboxSlideshow.hover{background-position:-150px 0px;} .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
.cboxSlideshow_off #cboxSlideshow{background-position:-225px -25px; left:27px;} .cboxSlideshow_off #cboxSlideshow{background-position:-225px -25px; left:27px;}
.cboxSlideshow_off #cboxSlideshow.hover{background-position:-225px 0px;} .cboxSlideshow_off #cboxSlideshow:hover{background-position:-225px 0px;}

View file

@ -3,7 +3,7 @@
The following rules are the styles that are consistant between themes. The following rules are the styles that are consistant between themes.
Avoid changing this area to maintain compatability with future versions of ColorBox. Avoid changing this area to maintain compatability with future versions of ColorBox.
*/ */
#colorbox {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;} #colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;} #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;} #cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;} #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
@ -26,14 +26,14 @@
#colorbox{} #colorbox{}
#cboxContent{margin-top:20px;} #cboxContent{margin-top:20px;}
#cboxLoadedContent{background:#000; padding:5px;} #cboxLoadedContent{background:#000; padding:5px;}
#cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;} #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;}
#cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;} #cboxCurrent{position:absolute; top:-20px; right:5px; color:#ccc;}
#cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;} #cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
#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;} #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;}
#cboxPrevious.hover{background-position:bottom left;} #cboxPrevious:hover{background-position:bottom left;}
#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;} #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;}
#cboxNext.hover{background-position:bottom right;} #cboxNext:hover{background-position:bottom right;}
#cboxLoadingOverlay{background:#000;} #cboxLoadingOverlay{background:#000;}
#cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;} #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
#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;} #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;}
#cboxClose.hover{background-position:bottom center;} #cboxClose:hover{background-position:bottom center;}

View file

@ -3,6 +3,7 @@
The following rules are the styles that are consistant between themes. The following rules are the styles that are consistant between themes.
Avoid changing this area to maintain compatability with future versions of ColorBox. Avoid changing this area to maintain compatability with future versions of ColorBox.
*/ */
#colorbox, #cboxLoadedContent {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;} #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:4999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;} #cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:right;} #cboxMiddleLeft, #cboxBottomLeft{clear:right;}
@ -25,14 +26,14 @@
#colorbox{} #colorbox{}
#cboxContent{margin-top:20px;} #cboxContent{margin-top:20px;}
#cboxLoadedContent{background:#000; padding:5px;} #cboxLoadedContent{background:#000; padding:5px;}
#cboxTitle{position:absolute; top:-20px; right:0; color:#ccc;} #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;}
#cboxCurrent{position:absolute; top:-20px; left:0px; color:#ccc;} #cboxCurrent{position:absolute; top:-20px; left:5px; color:#ccc;}
#cboxSlideshow{position:absolute; top:-20px; left:90px; color:#fff;} #cboxSlideshow{position:absolute; top:-20px; left:90px; color:#fff;}
#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;} #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;}
#cboxPrevious.hover{background-position:bottom right;} #cboxPrevious:hover{background-position:bottom right;}
#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;} #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;}
#cboxNext.hover{background-position:bottom left;} #cboxNext:hover{background-position:bottom left;}
#cboxLoadingOverlay{background:#000;} #cboxLoadingOverlay{background:#000;}
#cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;} #cboxLoadingGraphic{background:url(images/loading.gif) center center no-repeat;}
#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;} #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;}
#cboxClose.hover{background-position:bottom center;} #cboxClose:hover{background-position:bottom center;}

Some files were not shown because too many files have changed in this diff Show more