Une Bévue a écrit :
SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote:
Voir à voir si des fois :
function encodeURL(url) {
return encodeURI(url.replace(/ /g,'+')).replace(/&/g,'&')
}
function decodeURL(url) {
return decodeURI(url).replace(/\+/g,' ')).replace(/&/g,'&')
}
cf mon essai, en js :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/path2id.html
Ha! mais là, en +, tu veux ':' remplaçant '/' !
(sais pas pourquoi tu veux tous ces trucs d'id, m'enfin ...)
var path = "/Users/yt/Sites/JS/doc/closures/closures_fichiers",
id = "ID"+encodeURIComponent(path).replace(/%2F/g,':'),
pathback = decodeURIComponent(id.substring(2).replace(/:/g,'%2F'));
et son équivalent en php :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/path2id.php
$path = '/Users/yt/Sites/JS/doc/closures/closures_fichiers';
$id = preg_replace('/%2F/', ':', 'ID'.urlencode($path));
$pathback = urldecode(preg_replace('/:/', '%2F', substr($id, 2)));
de toutes façons tu triches :
tu n'as ni dossier ni fichier avec accents !
<
http://je.m.arrete.free.fr/yt/url_encode_yt.php>
<
http://je.m.arrete.free.fr/yt/url_encode_stef.php>
j'ai lu sur le net que urlencode et encodeURI ne sont pas strictement
equivalents.
c'est bien ce que je disais ;-)
mais là est-ce réellement important ?
mon premier essai est là :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/index.php
la première requête fonctionne mais la page s'affiche sans images et les
liens href ne marchent pas, je ne pige pas pourquoi.
ce browse() ?
sur mon mac, j'ai sauvegardé cette page index.php en index.php.html :
http://thoraval.yvon.free.fr/PHP/AJAX_dir_tree/index.php.html
elle montre d'abord ce que la page précédente (index.php) aurait dû
afficher puis fait une nouvelle requêtesur le même dossier avec le même
résultat...
Pourquoi n'a t-on pas simplement :
<li title="menus - last modified: 23rd May 08 19:35:50"
class="dir"
id="ID:Users:yt:Sites:XML:menus"
onclick="browse(this);">
menus
</li>
au lieu de :
<li title="menus - last modified: 23rd May 08 19:35:50">
<span onclick='browse("ID:2FUsers:2Fyt:2FSites:2FXML:2Fmenus");'
class="dir">menus</span>
<div style="margin-left: 2em"
id="ID:2FUsers:2Fyt:2FSites:2FXML:2Fmenus">
</div>
</li>
pour obtenir après déploiement :
<li title="menus - last modified: 23rd May 08 19:38:10"
class="dir_opened"
id="ID:Users:yt:Sites:XML:menus"
onclick="browse(this);">
menus
<ul>
<li class="file"
id="ID:Users:yt:Sites:XML:menus:truc.xhtml"
onclick="browse(this)">
truc.xhtml
<li>
<li class="imag"
id="ID:Users:yt:Sites:XML:menus:truc.png"
onclick="browse(this)">
truc.png
<li>
</ul>
</li>
function browse(what) {
var path = decodeURIComponent(what.id.substring(2).replace(/:/g,'%2F'));
if(what.className.indexOf('opened')<0)
location = path;
else
location = replier(path);
// what.getElementsByTagName('UL')[0].style.display = 'none';
}
--
sm