- message d'erreur si style CSL non dispo

- Amélioration des modèles
- Page spip.php?page=biblio pour Zpip
- Ajout de saisies
v1
joseph@larmarange.net 11 years ago
parent bd46ee3cae
commit fe4451f21b

16
.gitattributes vendored

@ -1,6 +1,7 @@
* text=auto !eol
action/zotspip_forcer_maj.php -text
base/zotspip.php -text
contenu/page-biblio.html -text
csl/ama.csl -text
csl/apa.csl -text
csl/apsa.csl -text
@ -144,9 +145,11 @@ lib/citeproc-php/locale/locales-zh-TW.xml -text
modeles/biblio.html -text
modeles/biblio_annee.html -text
modeles/biblio_annee_type.html -text
modeles/biblio_auteur.html -text
modeles/biblio_simple.html -text
modeles/biblio_type.html -text
modeles/biblio_type_annee.html -text
navigation/page-biblio.html -text
/plugin.xml -text
prive/exec/configurer_zotspip.html -text
prive/exec/generer_langue_zotero.html -text
@ -154,6 +157,19 @@ prive/exec/zcreator.html -text
prive/exec/zcreators.html -text
prive/exec/zitems.html -text
prive/inclure/maj_zotspip.html -text
saisies-vues/csl.html -text
saisies-vues/zotspip_type.html -text
saisies/csl.html -text
saisies/zotspip_annee.html -text
saisies/zotspip_collection.html -text
saisies/zotspip_conference.html -text
saisies/zotspip_creator.html -text
saisies/zotspip_editeur.html -text
saisies/zotspip_publication.html -text
saisies/zotspip_tag.html -text
saisies/zotspip_type.html -text
saisies/zotspip_type_doc.html -text
saisies/zotspip_zcollection.html -text
/zotspip_administrations.php -text
/zotspip_cron.php -text
/zotspip_file.html -text

@ -0,0 +1,10 @@
[(#REM) Fil d'Ariane ]
<p id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> &gt; <strong class="on"><:zotspip:titre_page_biblio:></strong></p>
<div class="contenu-principal">
<div class="cartouche">
[<h1 class="h1">(#CONFIG{titre_page_biblio,<:zotspip:titre_page_biblio:>})</h1>]
</div>
</div>
[(#REM) Le type de reference est passe dans type_ref pour eviter colision avec Zpip et le type de page. ]
#INCLURE{fond=modeles/biblio_#ENV{tri,annee},type=#ENV{type_ref},env}

@ -52,6 +52,10 @@
</select>
</li>
</B_csl_defaut>
<li class="editer_titre_page_biblio[ (#ENV**{erreurs}|table_valeur{titre_page_biblio}|oui)erreur]">
<label for="titre_page_biblio"><:zotspip:label_titre_page_biblio:></label>
<input type="text" name="titre_page_biblio" class="text" value="#ENV*{titre_page_biblio}" id="titre_page_biblio" [(#HTML5|oui)required='required']/>
</li>
<li class="editer_corriger_date[ (#ENV**{erreurs}|table_valeur{corriger_date}|oui)erreur]">
<label><:zotspip:label_corriger_date:></label>
<p class="explication"><:zotspip:explication_corriger_date:></p>

@ -21,28 +21,45 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'explication_api_key' => 'S\'obtient sur la <a href="https://www.zotero.org/settings/keys">page Zotero de gestion des clés personnelles</a>. Pensez à accorder des droits d\'accès suffisants à cette clé.',
'explication_corriger_date' => 'Zotero transmets les dates de publication telles qu\'elles ont été saisies. Dès lors, le processeur CSL n\'est pas toujours en capacité de décomposer correctement ces dernières en raison de la grande variété de formats différents. Si tel est le cas, la date de publication ne sera pas affichée une fois les références mises en forme. ZotSpip peut corriger en amont les dates de publications. Attention : seule l\'année sera alors transmise au processeur CSL, sauf si la date est de la forme aaaa-mm-jj ou aaaa-mm. Cette option n\'a par contre aucune répercussion sur la librairie Zotero elle-même.',
'explication_id_librairie' => 'Pour une librairie personnelle, le <em>userID</em> est indiqué sur la <a href="https://www.zotero.org/settings/keys">page Zotero de gestion des clés personnelles</a>. Pour un groupe, le <em>groupID</em> se trouve dans l\'URL de configuration du groupe qui est de la forme <em>https://www.zotero.org/groups/&lt;groupID&gt;/settings</em>.',
'explication_maj_zotspip' => 'ZotSpip se synchronise à intervalles réguliers (environ toutes les 4 heures) avec le serveur Zotero. Seules les dernières modifications (depuis la dernière synchronisation) sont prises en compte. Au besoin, vous pouvez forcer une mise à jour complète de la base de données, toutes les références étant alors téléchargées à nouveau (si votre librairie est importante, cette synchronisation se fera en plusieurs étapes, seulement 50 référénces pouvant être mises à jour à la fois).',
'explication_maj_zotspip' => 'ZotSpip se synchronise à intervalles réguliers (environ toutes les 4 heures) avec le serveur Zotero. Seules les dernières modifications (depuis la dernière synchronisation) sont prises en compte. Au besoin, vous pouvez forcer une mise à jour complète de la base de données, toutes les références étant alors téléchargées à nouveau (si votre librairie est importante, cette synchronisation se fera en plusieurs étapes, seulement 50 références pouvant être mises à jour à la fois).',
'explication_ordre_types' => 'Vous pouvez personnaliser l\'ordre utilisé pour les tris par type de référence (changez l\'ordre par glisser/déposer).',
'explication_username' => 'Pour une librairie personnelle, le nom d\'utilisateur est indiqué sur la <a href="https://www.zotero.org/settings/account">page de configuration du compte</a>. Pour un groupe partagé, le nom du groupe se situe à la fin de l\'URL de la page d\'accueil du groupe qui est de la forme <em>https://www.zotero.org/groups/&lt;nom_du_groupe&gt;</em> (dans certain cas, le nom du groupe correspondant à son identifiant numérique).',
'exporter_reference' => 'Exporter la référence :',
'filtrer' => 'Filtrer',
'identifier_via_doi' => 'Identifier la ressource à partir de son DOI',
'identifier_via_isbn' => 'Identifier la ressource à partir de son ISBN',
'items_zotero' => 'Références Zotero',
'item_annee' => 'par année',
'item_annee_type' => 'par année puis par type',
'item_auteur' => 'par auteur',
'item_type' => 'par type de référence',
'item_type_annee' => 'par type puis par année',
'item_type_librairie_group' => 'groupe',
'item_type_librairie_user' => 'utilisateur',
'label_annee' => 'Année',
'label_api_key' => 'Clé API',
'label_auteur' => 'Auteur',
'label_collection' => 'Collection',
'label_corriger_date' => 'Corriger les dates de publication',
'label_csl' => 'Style CSL (mise en forme)',
'label_csl_defaut' => 'Style par défaut',
'label_identifiants_zotero' => 'Identifiants Zotero',
'label_id_librairie' => 'Identifiant de la librairie',
'label_options' => 'Options',
'label_ordre_types' => 'Tri par type de référence',
'label_recherche_libre' => 'Recherche libre',
'label_tag' => 'Mot-Clé',
'label_tags' => 'Mots-Clés',
'label_titre_page_biblio' => 'Titre de la page spip.php?page=biblio',
'label_tri' => 'Tri',
'label_type_librairie' => 'Type de librairie Zotero',
'label_type_ref' => 'Type de référence',
'label_username' => 'Nom d\'utilisateur ou du groupe',
'label_zcollection' => 'Collection Zotero',
'lien_ressource' => 'Lien vers la ressource',
'liste_createurs' => 'Listes des contributeurs',
'maj_zotspip' => 'Mettre à jour ZotSpip',
'message_erreur_style_csl' => 'Le style CSL @style@.csl n\'a pas été trouvé sur le serveur (fichier inexistant ou plugin désactivé).',
'modifier_en_ligne' => 'Modifier en ligne sur zotero.org',
'nom_prenom' => 'Nom, Prénom',
'plusieurs_references' => '@nb@ références',
@ -57,6 +74,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'sync_complete_demandee' => 'Une synchronisation complète de la base a été demandée.',
'sync_en_cours' => 'La synchronisation est en cours mais n\'est toujours pas terminée. Veuillez cliquer à nouveau sur <em>Synchroniser</em>.',
'tags' => 'Mots-clés :',
'titre_page_biblio' => 'Références bibliographiques',
'une_reference' => '1 référence',
'zotspip' => 'ZotSpip',
);

@ -13,7 +13,7 @@
<BOUCLE_test_tri(CONDITION){si #ENV{par}|=={type}}>
<B_biblio_type>
<ul class="spip">
<BOUCLE_biblio_type(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}>
<BOUCLE_biblio_type(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}>
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio_type>
</ul>
@ -21,7 +21,7 @@
</BOUCLE_test_tri>
<B_biblio>
<ul class="spip">
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{tri #ENV{par,auteurs},#GET{defaut_tri}}>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{tri #ENV{par,auteurs},#GET{defaut_tri}}>
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>

@ -2,10 +2,13 @@
#SET{export,#ENV{export}|=={non}|?{'','on'}}
#SET{liens,#ENV{liens}|=={non}|?{'','on'}}
#SET{souligne,#ENV{auteur}|et{#ENV{souligne}|!={non}}|?{#ENV{auteur},''}}
#SET{alea,#EVAL{rand()}} [(#REM) besoin d'un alea pour unique car le modele peut etre appele plusieurs fois (typiquement pour l'intro, puis pour le texte). ]
[(#REM) pagination de 50 car limite pour l'export des references. ]
<B_biblio>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{!par annee}{par auteurs}{json LIKE %#ENV{recherche}%}>
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique)</h4><ul class="spip">]
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{!par annee}{par auteurs}{json LIKE %#ENV{recherche}%}{pagination 50}>
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique{annee_#GET{alea}})</h4><ul class="spip">]
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>
[<p class="pagination">(#PAGINATION)</p>]
</B_biblio>

@ -2,11 +2,12 @@
#SET{export,#ENV{export}|=={non}|?{'','on'}}
#SET{liens,#ENV{liens}|=={non}|?{'','on'}}
#SET{souligne,#ENV{auteur}|et{#ENV{souligne}|!={non}}|?{#ENV{auteur},''}}
#SET{alea,#EVAL{rand()}} [(#REM) besoin d'un alea pour unique car le modele peut etre appele plusieurs fois (typiquement pour l'intro, puis pour le texte). ]
<B_biblio>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{!par annee}{par_type_zotero}{par auteurs}{json LIKE %#ENV{recherche}%}>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{!par annee}{par_type_zotero}{par auteurs}{json LIKE %#ENV{recherche}%}>
#SET{ouvert,' '}
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique)</h4>#SET{ouvert,''}]
[[(#GET{ouvert})</ul>]<h5 class="h5">(#TYPE|zotspip_traduire_type|unique{#ANNEE})</h5><ul class="spip">]
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique{annee_#GET{alea}})</h4>#SET{ouvert,''}]
[[(#GET{ouvert})</ul>]<h5 class="h5">(#TYPE|zotspip_traduire_type|unique{type_#GET{alea}_#ANNEE})</h5><ul class="spip">]
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>

@ -0,0 +1,11 @@
#SET{details,#ENV{details}|=={non}|?{'',#ENV{details,'on'}}}
#SET{export,#ENV{export}|=={non}|?{'','on'}}
#SET{liens,#ENV{liens}|=={non}|?{'','on'}}
#SET{souligne,#ENV{auteur}|et{#ENV{souligne}|!={non}}|?{#ENV{auteur},''}}
<B_biblio>
<ul class="spip">
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{par auteurs}>
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>
</B_biblio>

@ -8,11 +8,11 @@
}})]
<BOUCLE_test_tri(CONDITION){si #ENV{par}|=={type}}>
<BOUCLE_biblio_type(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}>
<BOUCLE_biblio_type(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}>
#INCLURE{fond=inclure/zitem,id_zitem,csl,souligne=#GET{souligne}}
</BOUCLE_biblio_type>
</BOUCLE_test_tri>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{tri #ENV{par,auteurs},#GET{defaut_tri}}>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{json LIKE %#ENV{recherche}%}{zotsip_depuis}{0,#ENV{max,100000}}{tri #ENV{par,auteurs},#GET{defaut_tri}}>
#INCLURE{fond=inclure/zitem,id_zitem,csl,souligne=#GET{souligne}}
</BOUCLE_biblio>
<//B_test_tri>

@ -2,9 +2,10 @@
#SET{export,#ENV{export}|=={non}|?{'','on'}}
#SET{liens,#ENV{liens}|=={non}|?{'','on'}}
#SET{souligne,#ENV{auteur}|et{#ENV{souligne}|!={non}}|?{#ENV{auteur},''}}
#SET{alea,#EVAL{rand()}} [(#REM) besoin d'un alea pour unique car le modele peut etre appele plusieurs fois (typiquement pour l'intro, puis pour le texte). ]
<B_biblio>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}{par auteurs}{json LIKE %#ENV{recherche}%}>
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#TYPE|zotspip_traduire_type|unique)</h4><ul class="spip">]
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}{par auteurs}{json LIKE %#ENV{recherche}%}>
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#TYPE|zotspip_traduire_type|unique{type_#GET{alea}})</h4><ul class="spip">]
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>

@ -2,11 +2,12 @@
#SET{export,#ENV{export}|=={non}|?{'','on'}}
#SET{liens,#ENV{liens}|=={non}|?{'','on'}}
#SET{souligne,#ENV{auteur}|et{#ENV{souligne}|!={non}}|?{#ENV{auteur},''}}
#SET{alea,#EVAL{rand()}} [(#REM) besoin d'un alea pour unique car le modele peut etre appele plusieurs fois (typiquement pour l'intro, puis pour le texte). ]
<B_biblio>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}{!par annee}{par auteurs}{json LIKE %#ENV{recherche}%}>
<BOUCLE_biblio(ZITEMS){id_parent==0}{auteur?}{type?}{annee?}{publication?}{conference?}{editeur?}{collection?}{type_doc?}{tag?}{zcollection?}{zotsip_depuis}{0,#ENV{max,100000}}{par_type_zotero}{!par annee}{par auteurs}{json LIKE %#ENV{recherche}%}>
#SET{ouvert,' '}
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#TYPE|zotspip_traduire_type|unique)</h4>#SET{ouvert,''}]
[[(#GET{ouvert})</ul>]<h5 class="h5">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique{#TYPE})</h5><ul class="spip">]
[[(#COMPTEUR_BOUCLE|>{1}|oui)</ul>]<h4 class="h4">(#TYPE|zotspip_traduire_type|unique{type_#GET{alea}})</h4>#SET{ouvert,''}]
[[(#GET{ouvert})</ul>]<h5 class="h5">(#ANNEE|=={0}|?{<:zotspip:annee_non_precisee:>,#ANNEE}|unique{annee_#GET{alea}_#TYPE})</h5><ul class="spip">]
#INCLURE{fond=inclure/zitem,id_zitem,csl,liste=oui,icones=oui,details=#GET{details},export=#GET{export},liens=#GET{liens},souligne=#GET{souligne}}
</BOUCLE_biblio>
</ul>

@ -0,0 +1,17 @@
[(#SET{tri, #ARRAY{annee,<:zotspip:item_annee:>,type,<:zotspip:item_type:>,annee_type,<:zotspip:item_annee_type:>,type_annee,<:zotspip:item_type_annee:>,auteur,<:zotspip:item_auteur:>}})]
<div class="formulaire_spip">
<form action="spip.php" method="get"><div>
<input type="hidden" name="page" value="biblio" />
<ul>
[(#SAISIE{selection,tri,label=<:zotspip:label_tri:>,cacher_option_intro=on,defaut=annee,datas=#GET{tri}})]
[(#SAISIE{csl,csl,label=<:zotspip:label_csl:>,cacher_option_intro=on,defaut=#CONFIG{zotspip/csl_defaut}})]
[(#SAISIE{zotspip_creator,auteur,label=<:zotspip:label_auteur:>})]
[(#SAISIE{zotspip_annee,annee,label=<:zotspip:label_annee:>})]
[(#SAISIE{input,recherche,label=<:zotspip:label_recherche_libre:>})]
[(#SAISIE{zotspip_type,type_ref,label=<:zotspip:label_type_ref:>})]
[(#SAISIE{zotspip_tag,tag,label=<:zotspip:label_tag:>})]
[(#SAISIE{zotspip_zcollection,zcollection,label=<:zotspip:label_collection:>})]
</ul>
<p class="boutons"><input type="submit" class="submit" value="<:zotspip:filtrer:>" /></p>
</div></form>
</div>

@ -68,4 +68,5 @@
<necessite id="SPIP" version="[2.1.0;2.1.99]" />
<necessite id="spip_bonux" />
<necessite id="jqueryui" />
<necessite id="saisies" />
</plugin>

@ -0,0 +1 @@
[<p>(#LISTER_CSL|table_valeur{#ENV{valeur}}|sinon{#ENV*{sans_reponse}})</p>]

@ -0,0 +1 @@
[<p>(#ENV{valeur}|zotspip_traduire_type|sinon{#ENV*{sans_reponse}})</p>]

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(POUR){tableau #LISTER_CSL}{par valeur}>
<option value="#CLE"[(#CLE|=={#GET{valeur}}|oui)selected="selected"]>#VALEUR</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion annee}{!par annee}{annee!=''}>
<option value="#ANNEE"[(#ANNEE|=={#GET{valeur}}|oui)selected="selected"]>#ANNEE</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion collection}{par collection}{collection!=''}>
<option value="#COLLECTION"[(#COLLECTION|=={#GET{valeur}}|oui)selected="selected"]>#COLLECTION</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion conference}{par conference}{conference!=''}>
<option value="#CONFERENCE"[(#CONFERENCE|=={#GET{valeur}}|oui)selected="selected"]>#CONFERENCE</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZCREATORS){fusion auteur}{par auteur}>
<option value="#AUTEUR"[(#AUTEUR|=={#GET{valeur}}|oui)selected="selected"]>#AUTEUR</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion editeur}{par editeur}{editeur!=''}>
<option value="#EDITEUR"[(#EDITEUR|=={#GET{valeur}}|oui)selected="selected"]>#EDITEUR</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion publication}{par publication}{publication!=''}>
<option value="#PUBLICATION"[(#PUBLICATION|=={#GET{valeur}}|oui)selected="selected"]>#PUBLICATION</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZTAGS){fusion tag}{par tag}>
<option value="#TAG"[(#TAG|=={#GET{valeur}}|oui)selected="selected"]>#TAG</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion type}{par_type_zotero}>
<option value="#TYPE"[(#TYPE|=={#GET{valeur}}|oui)selected="selected"]>[(#TYPE|zotspip_traduire_type)]</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,22 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(ZITEMS){fusion type_doc}{par type_doc}{type_doc!=''}>
<option value="#TYPE_DOC"[(#TYPE_DOC|=={#GET{valeur}}|oui)selected="selected"]>#TYPE_DOC</option>
</BOUCLE_selection>
</select>

@ -0,0 +1,28 @@
[(#REM)
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
- defaut : valeur par defaut si pas présente dans l'environnement
- valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement
- size : taille du select
]
[(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ]
#SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}}
<select name="#ENV{nom}" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ size="(#ENV{size})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
#SET{arbo,#ARRAY{0,&nbsp;}}
<BOUCLE_selection(ZCOLLECTIONS){par zcollection}{id_parent=0}>
<option value="#ZCOLLECTION"[(#ZCOLLECTION|=={#GET{valeur}}|oui)selected="selected"]>#ZCOLLECTION</option>
<BOUCLE_sous(ZCOLLECTIONS){par zcollection}{id_parent}>
<option value="#ZCOLLECTION"[(#ZCOLLECTION|=={#GET{valeur}}|oui)selected="selected"]>[(#GET{arbo}|table_valeur{#ID_PARENT})]&#x27a5; #ZCOLLECTION</option>
[(#SET{arbo,[(#GET{arbo}|array_merge{[(#ARRAY{#ID_ZCOLLECTION,[(#GET{arbo}|table_valeur{#ID_PARENT}|concat{&nbsp;&nbsp;&nbsp;&nbsp;})]})]})]})]
<BOUCLE_sous_sous(BOUCLE_sous) />
</BOUCLE_sous>
</BOUCLE_selection>
</select>

@ -69,6 +69,11 @@ function zotspip_calculer_reference($csljson,$annee,$style,$souligne,$date,$lang
if (!isset($citeproc[$style])) {
include_spip('inc/distant');
$csl = spip_file_get_contents(find_in_path("csl/$style.csl"));
// Si le style demande n'est pas disponible, message d'erreur et se rabattre sur apa.csl
if (!$csl) {
erreur_squelette(_T('zotspip:message_erreur_style_csl',array('style'=>$style)));
$csl = spip_file_get_contents(find_in_path("csl/apa.csl"));
}
$citeproc[$style] = new citeproc($csl,$lang);
}
@ -107,17 +112,17 @@ function zotspip_lister_csl(){
// Traduire le type de document
function zotspip_traduire_type($type) {
return _T('zotero:itemtypes_'.strtolower($type));
return ($type!='') ? _T('zotero:itemtypes_'.strtolower($type)) : '';
}
// Traduire le champ Zotero
function zotspip_traduire_champ($champ) {
return _T('zotero:itemfields_'.strtolower($champ));
return ($champ!='') ? _T('zotero:itemfields_'.strtolower($champ)) : '';
}
// Traduire le type d'auteur
function zotspip_traduire_createur($type) {
return _T('zotero:creatortypes_'.strtolower($type));
return ($type!='') ? _T('zotero:creatortypes_'.strtolower($type)) : '';
}
// Afficher l'icône du document

Loading…
Cancel
Save