X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fstyliser.php;fp=www%2Fecrire%2Fpublic%2Fstyliser.php;h=1d11898abbf5dd0ef5b81f3e3b00337c4d1b8f0e;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/public/styliser.php b/www/ecrire/public/styliser.php new file mode 100644 index 0000000..1d11898 --- /dev/null +++ b/www/ecrire/public/styliser.php @@ -0,0 +1,157 @@ + array( + 'id_rubrique' => $id_rubrique, + 'ext' => $ext, + 'fond' => $fond, + 'lang' => $lang, + 'contexte' => $contexte, // le style d'un objet peut dependre de lui meme + 'connect' => $connect + ), + 'data' => $squelette, + )); + + return array($squelette, $ext, $ext, "$squelette.$ext"); +} + + +/* + * Options de recherche de squelette par le styliseur, appele par le pipeline 'styliser' : + * Squelette par rubrique squelette-XX.html ou squelette=XX.html + */ +function styliser_par_rubrique($flux) { + + // uniquement si un squelette a ete trouve + if ($squelette = $flux['data']) { + $ext = $flux['args']['ext']; + + // On selectionne, dans l'ordre : + // fond=10 + if ($id_rubrique = $flux['args']['id_rubrique']) { + $f = "$squelette=$id_rubrique"; + if (@file_exists("$f.$ext")) + $squelette = $f; + else { + // fond-10 fond- + do { + $f = "$squelette-$id_rubrique"; + if (@file_exists("$f.$ext")) { + $squelette = $f; + break; + } + } while ($id_rubrique = quete_parent($id_rubrique)); + } + // sauver le squelette + $flux['data'] = $squelette; + } + } + + return $flux; +} + +/* + * Options de recherche de squelette par le styliseur, appele par le pipeline 'styliser' : + * Squelette par langue squelette.en.html + */ +function styliser_par_langue($flux) { + + // uniquement si un squelette a ete trouve + if ($squelette = $flux['data']) { + $ext = $flux['args']['ext']; + + // Affiner par lang + if ($lang = $flux['args']['lang']) { + $l = lang_select($lang); + $f = "$squelette.".$GLOBALS['spip_lang']; + if ($l) lang_select(); + if (@file_exists("$f.$ext")) { + // sauver le squelette + $flux['data'] = $f; + } + } + } + + return $flux; +} + +// Calcul de la rubrique associee a la requete +// (selection de squelette specifique par id_rubrique & lang) + +// http://doc.spip.org/@quete_rubrique_fond +function quete_rubrique_fond($contexte) { + + if (isset($contexte['id_rubrique']) + AND $id = intval($contexte['id_rubrique']) + AND $row = quete_parent_lang('spip_rubriques',$id)) { + $lang = isset($row['lang']) ? $row['lang'] : ''; + return array ($id, $lang); + } + + if (isset($contexte['id_breve']) + AND $id = intval($contexte['id_breve']) + AND $row = quete_parent_lang('spip_breves',$id) + AND $id_rubrique_fond = $row['id_rubrique']) { + $lang = isset($row['lang']) ? $row['lang'] : ''; + return array($id_rubrique_fond, $lang); + } + + if (isset($contexte['id_syndic']) + AND $id = intval($contexte['id_syndic']) + AND $row = quete_parent_lang('spip_syndic',$id) + AND $id_rubrique_fond = $row['id_rubrique'] + AND $row = quete_parent_lang('spip_rubriques',$id_rubrique_fond)) { + $lang = isset($row['lang']) ? $row['lang'] : ''; + return array($id_rubrique_fond, $lang); + } + + if (isset($contexte['id_article']) + AND $id = intval($contexte['id_article']) + AND $row = quete_parent_lang('spip_articles',$id) + AND $id_rubrique_fond = $row['id_rubrique']) { + $lang = isset($row['lang']) ? $row['lang'] : ''; + return array($id_rubrique_fond, $lang); + } +} +?>