Browse Source

Ajout des fichiers json. Mais pour le moment, il faut les inclure à la page pour qu'une boucle json puisse traiter les données… J'attends d'avoir plus d'infos sur l'utilisation de cette boucle pour l'intégrer.

svn/root/tags/plugins/dev/0.3.9
teddy.spip@gmail.com 9 years ago
parent
commit
2e0a278f43
  1. 8
      .gitattributes
  2. 101
      dev_fonctions.php
  3. 2
      dev_json.html
  4. 9
      formulaires/lister_fonctions_completes.html
  5. 1
      json/source_fonctions_completes.html
  6. 1
      json/source_fonctions_utilisateur.html
  7. 20
      prive/squelettes/contenu/source_fonctions_completes.html
  8. 1
      prive/squelettes/hierarchie/source_constantes.html
  9. 1
      prive/squelettes/hierarchie/source_fonctions_completes.html
  10. 1
      prive/squelettes/hierarchie/source_fonctions_utilisateur.html
  11. 1
      prive/squelettes/hierarchie/source_images.html
  12. 8
      prive/squelettes/inclure/fonction_complete_info_ligne.html

8
.gitattributes vendored

@ -1,5 +1,6 @@
* text=auto !eol
/dev_fonctions.php -text
/dev_json.html -text
/dev_options.php -text
formulaires/charter.html -text
formulaires/charter.php -text
@ -13,6 +14,8 @@ formulaires/lister_fonctions_utilisateur.php -text
formulaires/lister_images.html -text
formulaires/lister_images.php -text
inc/minipres.php -text
json/source_fonctions_completes.html -text
json/source_fonctions_utilisateur.html -text
lang/charter.xml -text
lang/charter_ar.php -text
lang/charter_en.php -text
@ -43,6 +46,11 @@ prive/squelettes/contenu/source_constantes.html -text
prive/squelettes/contenu/source_fonctions_completes.html -text
prive/squelettes/contenu/source_fonctions_utilisateur.html -text
prive/squelettes/contenu/source_images.html -text
prive/squelettes/hierarchie/source_constantes.html -text
prive/squelettes/hierarchie/source_fonctions_completes.html -text
prive/squelettes/hierarchie/source_fonctions_utilisateur.html -text
prive/squelettes/hierarchie/source_images.html -text
prive/squelettes/inclure/fonction_complete_info_ligne.html -text
prive/squelettes/inclure/fonction_info_ligne.html -text
prive/squelettes/inclure/image_info_ligne.html -text
prive/squelettes/navigation/source_constantes.html -text

101
dev_fonctions.php

@ -67,7 +67,7 @@ function lister_fonctions ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $fonctions_user[$prefixe];
$resultat = array($prefixe => $fonctions_user[$prefixe]);
}
return $resultat;
@ -107,7 +107,7 @@ function lister_constantes ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $constantes_user[$prefixe];
$resultat = array($prefixe => $constantes_user[$prefixe]);
}
return $resultat;
@ -151,7 +151,7 @@ function lister_images ($prefixe = null) {
if ($prefixe) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $images[$prefixe];
$resultat = array($prefixe => $images[$prefixe]);
}
return $resultat;
@ -206,38 +206,67 @@ function fonction_fichier ($fonction = null) {
return $filename;
}
/**
* Lister les fichiers php dans un répertoire donné
* ou, par défaut, dans tout le site.
*
* @param string $dir
* Par défaut, le répertoire racine du site.
* @return array
* Tableau contenant le chemin vers chaque fichier php.
*/
function lister_fichiers_php ($dir = _DIR_RACINE) {
global $list;
$ffs = scandir($dir);
$exclu = preg_match('/(tmp|local)/', $dir);
foreach ($ffs as $ff) {
if ($ff != '.' and $ff != '..' and $ff != '.svn' and $exclu == false) {
if (strlen($ff) >= 5) {
if (substr($ff, -4) == '.php') {
if (substr($dir, -1) == '/') {
// Si $dir est vide, on va chercher le répertoire
// dans lequel se trouve le script pour référence.
if (empty($dir)) {
# on recherche le script sur lequel on est
$script = end(explode('/', $_SERVER['PHP_SELF']));
# Et on l'enlève de l'url pour donner une bonne valeur à $dir
$dir = preg_replace('/' . $script . '/', '', $_SERVER['SCRIPT_FILENAME']);
}
if (!empty($dir) and is_dir($dir)) {
$ffs = scandir($dir);
$exclu = preg_match('/(tmp|local)/', $dir);
if (substr($dir, -1) !== '/') {
$dir = $dir . '/';
}
foreach ($ffs as $ff) {
if ($ff[0] != '.' and $exclu == false) {
if (strlen($ff) >= 5) {
if (substr($ff, -4) == '.php') {
$list[] = $dir . $ff;
} else {
$list[] = $dir . '/' . $ff;
}
//echo dirname($ff) . $ff . "<br/>";
}
}
if (is_dir($dir . $ff)) {
lister_fichiers_php($dir . $ff);
} elseif (is_dir($dir . '/' . $ff)) {
lister_fichiers_php($dir . '/' . $ff);
if (is_dir($dir . $ff)) {
lister_fichiers_php($dir . $ff);
}
}
}
}
return $list;
}
/**
* Rechercher le nom de toutes les fonctions
* dans le fichier php passé en paramètre.
*
* @param string $fichier
* @return array
*/
function lister_noms_fonctions ($fichier) {
$liste_fonctions = array();
$content = file_get_contents($fichier);
preg_match_all("/(function)([\s|\t]+)(\w+)/", $content, $fonctions);
foreach ($fonctions[3] as $fonction) {
$liste_fonctions[] = array('fichier' => $fichier, 'fonction' => $fonction);
if (is_file($fichier)) {
$content = file_get_contents($fichier);
preg_match_all("/(function)([\s|\t]+)(\w+)/", $content, $fonctions);
foreach ($fonctions[3] as $fonction) {
$liste_fonctions[] = array('fichier' => $fichier, 'fonction' => $fonction);
}
}
return $liste_fonctions;
}
@ -247,29 +276,33 @@ function lister_toutes_fonctions ($prefixe = null) {
$fichiers_php = lister_fichiers_php();
$fonctions_user = array();
foreach ($fichiers_php as $fichier) {
foreach (lister_noms_fonctions($fichier) as $value) {
$fonctions_user[] = $value;
if (count($fichiers_php) > 0) {
foreach ($fichiers_php as $fichier) {
foreach (lister_noms_fonctions($fichier) as $value) {
$fonctions_user[] = $value;
}
}
natcasesort($fonctions_user);
}
natcasesort($fonctions_user);
foreach ($fonctions_user as $value) {
if ($fonction = preg_split('/_/', $value['fonction'], -1, PREG_SPLIT_NO_EMPTY)) {
$fonctions_user[$fonction[0]][] = $value;
if (($key = array_search($value, $fonctions_user)) !== false) {
unset($fonctions_user[$key]);
if (count($fonctions_user) > 0) {
foreach ($fonctions_user as $value) {
if ($fonction = preg_split('/_/', $value['fonction'], -1, PREG_SPLIT_NO_EMPTY)) {
$fonctions_user[$fonction[0]][] = $value;
if (($key = array_search($value, $fonctions_user)) !== false) {
unset($fonctions_user[$key]);
}
}
}
ksort($fonctions_user);
}
ksort($fonctions_user);
$resultat = $fonctions_user;
if ($prefixe) {
if ($prefixe and count($fonctions_user) > 0) {
// On pourrait faire aussi un contrôle avec array_key_exists()
// Mais ça risque de fausser le résultat attendu.
$resultat = $fonctions_user[$prefixe];
$resultat = array($prefixe => $fonctions_user[$prefixe]);
}
return $resultat;

2
dev_json.html

@ -0,0 +1,2 @@
#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET}
[(#INCLURE{fond=json/[(#ENV{objets})],env})]

9
formulaires/lister_fonctions_completes.html

@ -1,7 +1,10 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#SET{prefixe,#ARRAY})]
<BOUCLE_prefixe (DATA) {source json, (#INCLURE{fond=dev_json,objets=source_fonctions_completes})}>
[(#SET{prefixe,[(#GET{prefixe}|push{#CLE})]})]
</BOUCLE_prefixe>
<form action="#ENV{action}" method="post">
[(#ACTION_FORMULAIRE{#ENV{action}})]
[(#SELF|parametre_url{prefixe,''}|form_hidden)]
@ -10,8 +13,8 @@
<label for="champ_prefixe"><:fonction:label_prefixe_fonction:></label>
<select name="prefixe" id="champ_prefixe">
<option value=""><:fonction:tout_voir:></option>
<BOUCLE_lister (DATA) {source table, (#REM|lister_toutes_fonctions|array_keys)} {par valeur}>
<option value="#VALEUR" [(#ENV{prefixe}|=={#VALEUR}|oui)selected="selected"]>#VALEUR [((#VALEUR|lister_toutes_fonctions|count))]</option>
<BOUCLE_lister (DATA) {source table, (#GET{prefixe})} {par valeur}>
<option value="#VALEUR" [(#ENV{prefixe}|=={#VALEUR}|oui)selected="selected"]>#VALEUR</option>
</BOUCLE_lister>
</select>
</li>

1
json/source_fonctions_completes.html

@ -0,0 +1 @@
[(#ENV{prefixe,''}|lister_toutes_fonctions|json_encode)]

1
json/source_fonctions_utilisateur.html

@ -0,0 +1 @@
[(#ENV{prefixe,''}|lister_fonctions|json_encode)]

20
prive/squelettes/contenu/source_fonctions_completes.html

@ -16,26 +16,12 @@
</tr>
</thead>
<tbody>
<BOUCLE_fonctions (DATA) {source table, (#VAL{''}|lister_toutes_fonctions)}>
<BOUCLE_fonctions (DATA) {source table, (#ENV{prefixe,''}|lister_toutes_fonctions)}>
<BOUCLE_prefixe (DATA) {source table, #VALEUR} {si #VALEUR|is_array}>
[<tr class="prefixe">
<td colspan="3"><h3>(#_fonctions:CLE|unique)</h3></td>
</tr>]
<tr class="[(#ENV{class})]">
<td class="fonction principale">[(#VALEUR{fonction}|replace{'_','_<wbr/>'})] [(#VALEUR{fichier}|match{'/plugins/'}|non)<a href="http://code.spip.net/@#VALEUR{fonction}" target="_blank" class="aide">[(#CHEMIN_IMAGE{aide-16.png}|balise_img|inserer_attribut{title,<:titre_image_aide:>})]</a>]</td>
<td class="filename secondaire">[(#VALEUR{fichier}|replace{(/|_),$1<wbr/>})]</td>
<td class="surcharge secondaire">[(#VALEUR{fonction}|match{(_dist)$}|?{[(#CHEMIN_IMAGE{ok-16.png}|balise_img)],[(#CHEMIN_IMAGE{supprimer-8.png}|balise_img)]})]</td>
</tr>
#INCLURE{fond=prive/squelettes/inclure/fonction_complete_info_ligne,fonction=#VALEUR,class=(#COMPTEUR_BOUCLE|alterner{'row_odd','row_even'}),prefixe=(#_fonctions:CLE|unique)}
</BOUCLE_prefixe>
</B_prefixe>
[<tr class="prefixe">
<td colspan="3"><h3>(#ENV{prefixe,''}|unique)</h3></td>
</tr>]
<tr class="[(#ENV{class})]">
<td class="fonction principale">[(#VALEUR{fonction}|replace{'_','_<wbr/>'})] [(#VALEUR{fichier}|match{'/plugins/'}|non)<a href="http://code.spip.net/@#VALEUR{fonction}" target="_blank" class="aide">[(#CHEMIN_IMAGE{aide-16.png}|balise_img|inserer_attribut{title,<:titre_image_aide:>})]</a>]</td>
<td class="filename secondaire">[(#VALEUR{fichier}|replace{(/|_),$1<wbr/>})]</td>
<td class="surcharge secondaire">[(#VALEUR{fonction}|match{(_dist)$}|?{[(#CHEMIN_IMAGE{ok-16.png}|balise_img)],[(#CHEMIN_IMAGE{supprimer-8.png}|balise_img)]})]</td>
</tr>
#INCLURE{fond=prive/squelettes/inclure/fonction_complete_info_ligne,fonction=#VALEUR,class=(#COMPTEUR_BOUCLE|alterner{'row_odd','row_even'}),prefixe=(#ENV{prefixe}|unique)}
<//B_prefixe>
</BOUCLE_fonctions>
</tbody>

1
prive/squelettes/hierarchie/source_constantes.html

@ -0,0 +1 @@
[(#VAL{source_fonctions_utilisateur}|barre_onglets{source_constantes})]

1
prive/squelettes/hierarchie/source_fonctions_completes.html

@ -0,0 +1 @@
[(#VAL{source_fonctions_utilisateur}|barre_onglets{source_fonctions_completes})]

1
prive/squelettes/hierarchie/source_fonctions_utilisateur.html

@ -0,0 +1 @@
[(#VAL{source_fonctions_utilisateur}|barre_onglets{source_fonctions_utilisateur})]

1
prive/squelettes/hierarchie/source_images.html

@ -0,0 +1 @@
[(#VAL{source_fonctions_utilisateur}|barre_onglets{source_images})]

8
prive/squelettes/inclure/fonction_complete_info_ligne.html

@ -0,0 +1,8 @@
[<tr class="prefixe">
<td colspan="3"><h3>(#ENV{prefixe})</h3></td>
</tr>]
<tr class="[(#ENV{class})]">
<td class="fonction principale">[(#ENV{fonction}|table_valeur{fonction}|replace{'_','_<wbr/>'})] [(#ENV{fonction}|table_valeur{fichier}|match{'/plugins/'}|non)<a href="http://code.spip.net/@[(#ENV{fonction}|table_valeur{fonction})]" target="_blank" class="aide">[(#CHEMIN_IMAGE{aide-16.png}|balise_img|inserer_attribut{title,<:titre_image_aide:>})]</a>]</td>
<td class="filename secondaire">[(#ENV{fonction}|table_valeur{fichier}|replace{(/|_),$1<wbr/>})]</td>
<td class="surcharge secondaire">[(#ENV{fonction}|table_valeur{fonction}|match{(_dist)$}|?{[(#CHEMIN_IMAGE{ok-16.png}|balise_img)],[(#CHEMIN_IMAGE{supprimer-8.png}|balise_img)]})]</td>
</tr>
Loading…
Cancel
Save