X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fvertebrer.php;fp=www%2Fecrire%2Fpublic%2Fvertebrer.php;h=33473cd002f3dbf54af975b3ae137036e62148c1;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/public/vertebrer.php b/www/ecrire/public/vertebrer.php new file mode 100644 index 0000000..33473cd --- /dev/null +++ b/www/ecrire/public/vertebrer.php @@ -0,0 +1,176 @@ + $t) { + $tri = $direction + . ((sql_test_int($t) OR sql_test_date($r)) ? 'tri_n' : 'tri'); + + $url = vertebrer_sanstri($tri) + . "|parametre_url{" . $tri . ",'" . $n . "'}"; + + $res .= "\n\t\t" + . "\n\t\t\t$n" + . "\n\t\t"; + } + return $res; +} + +// http://doc.spip.org/@vertebrer_sanstri +function vertebrer_sanstri($sauf='') +{ + $url =""; + foreach (array('tri', 'tri_n', '_tri', '_tri_n') as $c) { + if ($sauf != $c) $url .= "|$c"; + } + return '|parametre_url{"' . substr($url,1) .'",""}'; +} + +// Autant de formulaire que de champs (pour les criteres conditionnels) + +// http://doc.spip.org/@vertebrer_form +function vertebrer_form($fields) +{ + $res = ''; + $url = join('|', array_keys($fields)); + $url = "#SELF|\n\t\t\tparametre_url{'$url',''}"; + foreach($fields as $n => $t) { + $s = sql_test_int($t) ? 11 + : (preg_match('/char\s*\((\d)\)/i', $t, $r) ? $r[1] : ''); + + $res .= "\n\t\t
" + . "
" + . "\n\t\t\t\n\t\t\t[($url|\n\t\t\tform_hidden)]" + . "\n\t\t
"; + } + return $res; +} + +// Autant de criteres conditionnels que de champs + +// http://doc.spip.org/@vertebrer_crit +function vertebrer_crit($v) +{ + $res = ""; + foreach($v as $n => $t) { $res .= "\n\t\t{" . $n . " ?}"; } + return $res; +} + + +// Class CSS en fonction de la parite du numero de ligne. +// Style text-align en fonction du type SQL (numerique ou non). +// Filtre de belle date sur type SQL signalant une date ou une estampille. +// Si une colonne reference une table, ajoute un href sur sa page dynamique +// (il faudrait aller chercher sa def pour ilustrer les jointures en SPIP) + +// http://doc.spip.org/@vertebrer_cell +function vertebrer_cell($fields) +{ + $res = ""; + foreach($fields as $n => $t) { + $texte = "#" . strtoupper($n); + if (preg_match('/\s+references\s+([\w_]+)/' , $t, $r)) { + $url = "[(#SELF|parametre_url{page,'" . $r[1] . "'})]"; + $texte = "" . $texte . ""; + } + if (sql_test_int($t)) + $s = " style='text-align: right;'"; + else { + $s = ''; + if (sql_test_date($t)) + $texte = "[($texte|affdate_heure)]"; + } + $res .= "\n\t\t$texte"; + } + return $res; +} + +// http://doc.spip.org/@public_vertebrer_dist +function public_vertebrer_dist($desc) +{ + $nom = $desc['table']; + $surnom = $desc['id_table']; + $connexion = $desc['connexion']; + $field = $desc['field']; + $key = $desc['key']; + + ksort($field); + + $form = vertebrer_form($field); + $crit = vertebrer_crit($field); + $cell = vertebrer_cell($field); + $sort = vertebrer_sort($field,''); + $tros = vertebrer_sort($field,'_'); + $titre = "[(#ENV{page}|image_typo{police=dustismo_bold.ttf,taille=36,couleur=4433bb})]"; + $distant = !$connexion ? '' : "&connect=$connexion"; + $skel = "./?"._SPIP_PAGE."=table:$surnom$distant&var_mode=debug&var_mode_affiche=squelette#debug_boucle"; + + return +"#CACHE{0} + + + +[(#NOM_SITE_SPIP|textebrut)] - #ENV{page} + + +
+ +
+

$titre


+ +[

(#PAGINATION)

] + + + $sort + + + $form + + + + $cell + + + + $tros + +
<:info_numero_abbreviation:>
#COMPTEUR_BOUCLE
<:info_numero_abbreviation:>
+
\n

<:texte_vide:>

+
+ +
+ +"; +} +?>