diff --git a/.gitattributes b/.gitattributes index b49192083f9f96d78d715a4ca7afbb4caf2bd59b..2a2956d5b28c0f616d8fadfbeb963f18c67f6b3c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,6 +9,7 @@ dist/inc-head.html -text dist/inc-petition.html -text dist/inc-pied.html -text dist/inc-rubriques.html -text +dist/modeles/article_traductions.html -text dist/modeles/doc.html -text dist/modeles/emb.html -text dist/modeles/fromage.html -text @@ -19,7 +20,6 @@ dist/modeles/pagination_page.html -text dist/modeles/pagination_page_precedent_suivant.html -text dist/modeles/pagination_precedent_suivant.html -text dist/modeles/paginationitem.html -text -dist/modeles/traductions.html -text dist/polices/dustismo-license.txt -text svneol=unset#application/octet-stream dist/polices/dustismo.ttf -text dist/polices/dustismo_bold.ttf -text diff --git a/dist/article.html b/dist/article.html index 600a702259e7e15989a6e4eaf3259d13526c5e8b..b666d6681314dcc5dcfee34d3ef01b10f167a3ef 100644 --- a/dist/article.html +++ b/dist/article.html @@ -33,7 +33,7 @@ <p><small>[(#DATE|nom_jour) ][(#DATE|affdate)][, <:par_auteur:> (#LESAUTEURS)]</small></p> - #TRADUCTIONS + #ARTICLE_TRADUCTIONS </div> #DEBUT_SURLIGNE diff --git a/dist/modeles/traductions.html b/dist/modeles/article_traductions.html similarity index 100% rename from dist/modeles/traductions.html rename to dist/modeles/article_traductions.html diff --git a/dist/spip_style.css b/dist/spip_style.css index 9da7cec748a777d542d8a54be0c138799978abfa..6014506ba290e0308b623ef23bb097fa35c8aaeb 100644 --- a/dist/spip_style.css +++ b/dist/spip_style.css @@ -78,6 +78,9 @@ span.spip_documents_center { display:block; margin-top:1em; } /* Images typographiques (via image_typo), URL a revoir... */ .format_png { behavior: url(win_png.htc); } +/* modeles par defaut */ +.spip_modele {float:right; display:block; border:1px dotted grey; width:180px;} + /* Barre de raccourcis typographiques */ table.spip_barre { width: 100%; } diff --git a/dist/style_prive.html b/dist/style_prive.html index b65303b18253b2b006cba1c2e07547409e27aabc..281fc76ebb09469a1612cfa87b3546afd3e932b4 100644 --- a/dist/style_prive.html +++ b/dist/style_prive.html @@ -1307,6 +1307,10 @@ img, .spip_logos { margin: 0; padding: 0; border: none; } .spip_doc_titre { font-weight: bold; } .spip_doc_descriptif { clear: both; } + +/* modeles par defaut */ +.spip_modele {float:right; display:block; border:1px dotted grey; width:180px;} + /* pour le plugin "revision_nbsp" */ .spip-nbsp { border-bottom: 2px solid #c8c8c8; diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 6ae7f92bf897bdfff28aee40f19ccf7865e3df18..69b0c0a2f17fb91763b381cfe8b4d6bdef4d9c38 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -597,11 +597,9 @@ function calculer_url ($lien, $texte='', $pour='url') { // aliases (historique) if ($f == 'art') $f = 'article'; - else if ($f == 'art') $f = 'article'; - else if ($f == 'rub') $f = 'rubrique'; else if ($f == 'rub') $f = 'rubrique'; else if ($f == 'aut') $f = 'auteur'; - else if ($f == 'doc' OR $f == 'im' OR $f == 'img' OR $f == 'image') + else if ($f == 'doc' OR $f == 'im' OR $f == 'img' OR $f == 'image' OR $f == 'emb') $f = 'document'; else if (preg_match(',^br..?ve$,S', $f)) $f = 'breve'; # accents :( diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index abc9b1d3b9596994d0b9d3fa577f37ea18b8a693..11e0bca957b72cdf24c753fef72030f7cfbdf378 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -440,22 +440,25 @@ function joli_repertoire($rep) { // http://doc.spip.org/@table_objet function table_objet($type) { static $surnoms = array( - 'article' => 'articles', - 'auteur' => 'auteurs', - 'breve' => 'breves', - 'document' => 'documents', - 'forum' => 'forum', # hum - 'groupe_mots' => 'groupes_mots', # hum - 'message' => 'messages', - 'mot' => 'mots', - 'petition' => 'petitions', - 'rubrique' => 'rubriques', - 'signature' => 'signatures', - 'syndic' => 'syndic', - 'site' => 'syndic', # hum hum - 'syndic_article' => 'syndic_articles', - 'type_document' => 'types_documents' # hum - ); + 'article' => 'articles', + 'auteur' => 'auteurs', + 'breve' => 'breves', + 'document' => 'documents', + 'doc' => 'documents', # pour les modeles + 'img' => 'documents', + 'emb' => 'documents', + 'forum' => 'forum', # hum + 'groupe_mots' => 'groupes_mots', # hum + 'message' => 'messages', + 'mot' => 'mots', + 'petition' => 'petitions', + 'rubrique' => 'rubriques', + 'signature' => 'signatures', + 'syndic' => 'syndic', + 'site' => 'syndic', # hum hum + 'syndic_article' => 'syndic_articles', + 'type_document' => 'types_documents' # hum + ); return $surnoms[$type]; } @@ -465,6 +468,8 @@ function id_table_objet($type) { return 'id_syndic'; else if ($type == 'forum') return 'id_forum'; + else if ($type=='doc' OR $type=='img' OR $type=='emb') # pour les modeles + return 'id_document'; else return 'id_'.$type; } diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index a094f6b976be9a714f357b412b4fbd8dc8767184..3c2c1f5c633aed99f6e0a2a83277a9e576ac7a6f 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -429,21 +429,31 @@ function inclure_modele($squelette, $type, $id) { } } - // special img, doc, emb - if (in_array($type, array('img', 'doc', 'emb'))) - $id_type = 'id_document'; - else - $id_type = 'id_'.$type; + // en cas d'echec, si l'objet demande a une url, on cree un petit encadre + // avec un lien vers l'objet ; sinon on passe la main au suivant + if (!find_in_path($fond.'.html')) { + $lien = calculer_url("$type$id", '', 'tout'); + if ($lien[1] == 'spip_url') + return false; + else + return '<a href="'.$lien[0].'" class="spip_modele' + . ($class ? " $class" : '') + . '">'.sinon($lien[2], _T('ecrire:info_sans_titre'))."</a>"; + } - // en cas d'echec on passe la main au suivant - if (!find_in_path($fond.'.html')) - return false; + // Creer le contexte $contexte = array( - $id_type => $id, 'lang' => $GLOBALS['spip_lang'], - 'fond' => $fond + 'fond' => $fond, + 'dir_racine' => _DIR_RACINE # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte ); + // Fixer l'identifiant qu'on passe dans #ENV ; + // pour le modele <site1> on veut id_syndic => 1 + // par souci de systematisme on ajoute aussi + // id => 1. + $contexte[id_table_objet($type)] = $contexte['id'] = $id; + if ($align) $contexte['align'] = $align; @@ -452,10 +462,11 @@ function inclure_modele($squelette, $type, $id) { // Traiter les parametres // par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en> - $contexte = array_merge($contexte, + $contexte = array_merge($contexte, creer_contexte_de_modele(explode('|', $squelette))); - // Un marqueur de notes unique lie a ce modele + // On cree un marqueur de notes unique lie a ce modele + $enregistre_marqueur_notes = $GLOBALS['marqueur_notes']; $GLOBALS['marqueur_notes'] = substr(md5(serialize($contexte)),0,8); $GLOBALS['compt_note'] = 0; @@ -465,8 +476,9 @@ function inclure_modele($squelette, $type, $id) { // Si le modele n'a pas affiche ses notes, les supprimer (elles *doivent* // etre dans le cache du modele, autrement elles ne seraient pas prises en // compte a chaque calcul d'un texte contenant un modele, mais seulement - // quand le modele serait calcule) + // quand le modele serait calcule, et on aurait des resultats incoherents) $GLOBALS['les_notes'] = ''; + $GLOBALS['marqueur_notes'] = $enregistre_marqueur_notes; $compteur--; return $retour;