IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Questions sur FileUploader et Dialog [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut Questions sur FileUploader et Dialog
    Bonjour,

    1 - J'utilise l'objet "fileUploader" pour faciliter l'enregistrement de fichiers. Cela fonctionne très bien sauf qu'il arrive parfois que le retour en Json des valeurs ouvre une nouvelle page au lieu d'arriver dans mon div ou encore qu'il ne se passe rien. J'imagine que c'est sans doute car l'objet est "expérimental" mais si vous avez une idée du pourquoi et si c'est possible de le régler, je suis preneur

    NB : Il faut que je fasse un rafraichissement "complet" de la page pour que cela fonctionne à nouveau.

    2 - Afin d'afficher les différentes étapes d'enregistrement de mon formulaire, à savoir la sauvegarde en base des données, de l'enregistrement des fichiers dans un répertoire au nom de la référence générée à l'étape précédente et de l'envoi par mail de la nouvelle référence, j'ai rajouté une fenêtre dialog mais je souhaiterais qu'elle ne sois "fermable" que par le bouton "fermer" que j'activerais une fois tout le processus achevé. Sauf que je n'arrive pas à désactiver la petite croix en haut à droite. Pourtant il y a l'attribut "closable=false" si je ne me trompe pas.

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Je ne comprends pas trop: de mémoire FileUploader dispose d'un événement du type "complete" qu'on peut traiter pour afficher des infos. Mais c'est nous qui affichons ces infos dans un div, pas Dojo . Non ? Dans ce cas là, comment une fenêtre peut-elle s'ouvrir ? Et je crois d'ailleurs que cela ne dépend pas du fait qu'on utilise ou pas Flash pour le transfert (mais je n'y mettrai pas ma main à couper )

    Ensuite,
    Pourtant il y a l'attribut "closable=false" si je ne me trompe pas.
    ben justement, vérifie car je ne suis pas sûr (mais quasiment...) qu'il y ait cet attribut Cet attribut existe pour les TabContainer mais pas pour les dialog.


    ERE

  3. #3
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Pour cacher le bouton close (et inversement pour le montrer):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dojo.style(dijit.byId("dialog").closeButtonNode, {
            "visibility": "hidden"
         });
    ERE

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut FilteringSelect en plus en plus...
    Mais c'est nous qui affichons ces infos dans un div, pas Dojo . Non ?
    Oui tout à fait et c'est bien pour ça que cela m'étonne. J'ai bien l'évènement onComplete avec lequel je récupère toutes mes infos que j'affiche dans un div pour chaque élément. Sauf que parfois il retourne les valeurs en ouvrant une fenêtre différente. Est ce parce que les données de retour sont encadrées par des balises <textarea> ? Je n'ai fait que reprendre l'exemple du site officiel et je l'ai modifié à ma sauce sans jamais toucher au format de retour...

    En ce qui concerne le "closable" j'ai trouvé l'info sur l'api. Il y est mais il ne fonctionne pas. Et ta méthode fonctionne très bien, merci

    J'ai une autre question à propos du filteringSelect :
    Est il possible de récupérer la valeur affichée (displayedValue) pour l'envoyer à mon script de traitement ? au lieu d'envoyer la clé de l'item à savoir 0 pour la première position par exemple.

    Lorsque je regarde les valeurs qui seront envoyées par mon formulaire :
    alert("Valeurs envoyées : \r\n" + dojo.toJson(dijit.byId('monForm').attr("value")));
    Ma variable "Fen" a la valeur "2" qui correspond à la 3ème position du select et j'aurais souhaité qu'elle ait la valeur "F2009-10" par exemple.

    Merci d'avance.

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut
    Je vais préciser un peu plus le contexte dans lequel est utilisé le fileUploader.

    - Il est dans un fichier php contenant l'ensemble de mon formulaire.
    Ce fichier php est appelé par un lien qui l'affiche dans le dojox.layout.ContentPane.

    - Le dojo.require est dans ce fichier php et est donc relancé à chaque clic.

    - Au premier affichage tout fonctionne très bien.

    - Au deuxième affichage (sans faire F5 mais en cliquant sur le lien) une fenêtre s'ouvre avec mes informations de retour dans un <textarea>.

    - Au troisième et aux autres affichages plus rien ne se passe mais je peux quand meme sélectionner mes fichiers à upload.

    - Si je fais un refresh avec F5 ca fonctionne.

    Serait-ce un soucis du dojo.require qui n'est pas au bon endroit ?
    Je l'ai mis sur la page principale (où le contentPane est) et ca fait la meme chose.

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    J'ai testé ton code envoyé. L'histoire du textarea est normal car le composant s'appuie sur un iframe pour l'envoi de données.

    De mon côté je n'ai pas de bug, pas de fenêtre qui s'ouvre.

    Je pense que tu en as pour une seule raison: il y a un souci potentiel avec le script php d'upload (j'en ai eu en testant) lié au déplacement des fichiers. Tu devrais réécrire cette partie upload server car elle est très moyenne.

    Ensuite je crois que ton code s'expose à un bug lors du chargement de tes pagescomme (formulaire). Pourquoi mettre un dojo.addOnload ? si c'est pour détecter le chargement, alors le ContentPane dispose d'un événement onLoad.

    Le rare cas qui nécessite un ajout de dojo.addOnload est celui qui suit un dojo.require, dojo.addOnload étant appelé quand le chargement est fini. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function doTTT() {
        dojo.require("dojox.form.FileUploader");
        dojo.addOnLoad(function(){
          ....
        }
    }
    Sinon pour le reste c'est très intéressant de voir le résultat d'un formulaire dojo de ce type: cela me conforte dans l'idée que c'est un très bon framework !

    Bon dev,

    ERE

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut
    Pourquoi mettre un dojo.addOnload ?
    C'est la première fois que j'utilisais cette méthode et comme ca marchait, je ne m'inquiétais pas...
    Et je ne sais pas trop comment utiliser le onload du contentpane.
    j'imagine que c'est une truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="dojo/connect" event="onLoad">
            console.debug("onLoad called");
    </script>
    Je l'ai essayé mais rien...(enfin si c'est bien cette commade)

    Pour le code php, je l'ai épuré mais comme je decouvre un peu ce systeme d'upload je sais pas trop ou regarder

  8. #8
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    C'est bien la commande, à appliquer au contentpane.

    Pour l'upload PHP, fais beaucoup plus simple. Prends la doc PHP il y a de très bons exemple très vite implantés. Cela donne à peu près:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_FILES["eq_url_image"]["error"] == UPLOAD_ERR_OK) {
    	$tmp_name = $_FILES["eq_url_image"]["tmp_name"];
    	$dest = TON__DIR."images/".$_FILES["eq_url_image"]["name"];  					
    if (move_uploaded_file($tmp_name, $dest)===FALSE) die("pas d'upload !");
    	$newUrlFichier="images/".$_FILES["eq_url_image"]["name"];
    }
    ERE

  9. #9
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut
    Oui je vois un peu mieux le manque de controle qu'il y a dans le fichier php merci

    J'ai testé en utilisant le mode flash du fileUploader et je n'ai pas le soucis que j'avais avec le mode html. Je vais donc utiliser ce système qui me permet également de controler le poids avant transfert. Et je fais enlever ce addOnLoad.
    Par contre si j'ai bien compris le onLoad du contentPane, il faut mettre l'event sur la page ou j'ai declare le contentPane et faire un controle sur quelle page je suis pour ne pas charger a chaque fois mes objets.

  10. #10
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,
    Citation Envoyé par Daniel_Gibot Voir le message
    Oui je vois un peu mieux le manque de controle qu'il y a dans le fichier php merci

    J'ai testé en utilisant le mode flash du fileUploader et je n'ai pas le soucis que j'avais avec le mode html. Je vais donc utiliser ce système qui me permet également de controler le poids avant transfert. Et je fais enlever ce addOnLoad.
    Par contre si j'ai bien compris le onLoad du contentPane, il faut mettre l'event sur la page ou j'ai declare le contentPane et faire un controle sur quelle page je suis pour ne pas charger a chaque fois mes objets.
    C'est tout à fait ça.

    Concernant Flash, attention le FileUpload Flash ne fonctionne qu'avec la version Flash 10+ (à peu près sûr).


    ERE

  11. #11
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut
    Hello !

    Bon j'ai bien assimilé la technique du onLoad et finalement c'est mieux. De plus, l'appel à tout mes objets dojo si fait dans le même fichier.

    Le fileUploader version flash a davantage d'évènement gérable j'ai l'impression.
    D'ailleurs y a t'il un évènement à la suppression d'un fichier dans la liste avant transfert ?
    Car pour le moment je gère bien mes contrôles de poids des fichiers mais si ca vient à dépasser et qu'on en supprime un, la variable qui contient le poids n'est pas mise à jour

  12. #12
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Par défaut
    Re,

    J'ai trouvé comment faire sans un event du genre onRemove.
    Lors d'un clic, il suffit d'ajouter ce petit code qui va recupérer le poids des fichiers dans la liste d'attente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    poids = 0;
    dojo.forEach(mesFichiers.attr('fileList'),function(monFichier){
          poids += monFichier.size;
    });
    mesFichiers correspondant à l'objet fileUploader créé au onLoad de la page.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur .tabs et .dialog - confirmation
    Par Paul75 dans le forum jQuery
    Réponses: 6
    Dernier message: 29/01/2012, 01h03
  2. 2 questions sur fileupload de richfaces
    Par kam81 dans le forum JSF
    Réponses: 0
    Dernier message: 14/06/2009, 17h10
  3. question sur les dialog
    Par kkt8 dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2006, 15h53
  4. Question sur MFC DIALOG BASED
    Par beb30 dans le forum MFC
    Réponses: 10
    Dernier message: 20/04/2006, 16h30
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo