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 :

Redéfinir la méthode _initButton de dijit._editor.plugins.LinkDialog [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut Redéfinir la méthode _initButton de dijit._editor.plugins.LinkDialog
    Salut,

    Comment je peux redéfinir la méthode _initButton de widget dijit._editor.plugins.LinkDialog ?

    Merci d'avance .

  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,

    Tu peux faire un dojo.extend qui équivaut à un mixin sur le prototype de l'objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dojo.extend(dijit._editor.plugins.LinkDialog, {
        _initButton: function() {
              //Ton code ici
        }
    });
    ERE

  3. #3
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Bojour,

    Merci beaucoup pour votre réponse.

    En fait, j'ai créé un widget:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    dojo.provide("mes.widget.editor.LinkDialog");
     
    dojo.require("dijit._editor.plugins.LinkDialog");
     
    dojo.extend(dijit._editor.plugins.LinkDialog, {
         _initButton: function() {
               console.log('ici mon code');
               ......
               ......
          }
    });
    dans mon fichier js, j'ai fait require a mon widget (mes.widget.editor.LinkDialog), mais je vois pas le boutton "link" dans editor !!!
    Est ce que je dois redéfinir d'autre fonction ??
    Mon objectif est : redéfinir le contenu de tooltip lors d'onclick sur le boutton "link" .

  4. #4
    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,

    Pourquoi toucher à _initButton dans ce cas ? A priori c'est plutôt le linkDialogTemplate qu'il faut modifier non ?

    ERE

  5. #5
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Oui exactement j'arrive modifié le code HTML, mais je voulais ajouté un treeview au contenu pour ça il me faut un store, model ....
    Est ce que vous avez une proposition ?

  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,

    Rien ne t'interdit de créer ton store, ton model etc... et d'y faire ensuite référence dans ton code HTML.

    ERE

  7. #7
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    J'ai essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    dojo.provide("my.widget.editor.LinkDialog");
    
    dojo.require("dijit._editor.plugins.LinkDialog");
    
    dojo.extend(dijit._editor.plugins.LinkDialog, {
    
    	linkDialogTemplate: [
         		//Erreur : this ne reference pas au widget courant
         		"11"+this._createTree+"<table><tr><td>",
         		"<label for='${id}_urlInput'>${url}</label>",
         		"</td><td>",
         		"<input dojoType='dijit.form.ValidationTextBox' required='true' " +
         		"id='${id}_urlInput' name='urlInput' intermediateChanges='true'/>",
         		"</td></tr><tr><td>",
         		"<label for='${id}_textInput'>${text}</label>",
         		"</td><td>",
         		"<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' " +
         		"name='textInput' intermediateChanges='true'/>",
         		"</td></tr><tr><td>",
         		"<label for='${id}_targetSelect'>${target}</label>",
         		"</td><td>",
         		"<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>",
         		"<option selected='selected' value='_self'>${currentWindow}</option>",
         		"<option value='_blank'>${newWindow}</option>",
         		"<option value='_top'>${topWindow}</option>",
         		"<option value='_parent'>${parentWindow}</option>",
         		"</select>",
         		"</td></tr><tr><td colspan='2'>",
         		"<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
         		"<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
         		"</td></tr></table>"
         		].join(""),
         		
         		_createTree: function(){
    				return "tree view";
    			}
    			     	
    });
    Est ce que possible de créé une méthode et l'appeler a l’intérieur de HTML ?

  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,

    Ben non... tu initialises une variable de la classe lors de son instanciation, donc this n'existe pas encore. Le constructeur est là pour ça...


    ERE

  9. #9
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Merci pour vos réponses.
    Est ce que vous avez une proposition pour résoudre cette problème c'est à dire ajouter une fonction qui créé mon tree view et l'appelé pour l'afficher a l’intérieur de tooltip ?

  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
    Re,

    Soit tu te crées ton propre plugin en t'appuyant sur LinkDialog, soit tu crées une class qui hérite de LinkDialog et dans ton constructeur tu affectes la variable linkDialogTemplate. Mais il ne te faut pas oublier d'enregistrer ta nouvelle class en temps que plugin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //code pris dans LinkDialog
    dojo.subscribe("dijit.Editor.getPlugin",null,function(o){
    	if(o.plugin){ return; }
    	switch(o.args.name){
    		case "createTreeLink":
    			o.plugin = new dijit._editor.plugins.TreeLinkDialog({command: o.args.name});
    			break;
    	}
    });
    Tiens nous informé, c'est intéressant.

    ERE

  11. #11
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Re,

    Merci pour votre proposition

    J'ai créé mon propre widget qui hérite dijit._editor.plugins.LinkDialog et j'ai modifié le contenu du variable linkDialogTemplate puis j'ai ajouté a la fin de mon widget :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dojo.subscribe("dijit.Editor.getPlugin",null,function(o){
    	if(o.plugin){ return; }
    	switch(o.args.name){
    		case "createTreeLink":
    			o.plugin = new my.widget.editor.LinkDialog2({command: o.args.name});
    			break;
    	}
    });
    dans l'appel de l'éditeur j'ai utilisé createTreeLink
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div
    	data-dojo-type="dijit.Editor"
    	data-dojo-props="extraPlugins:['viewsource','createTreeLink', 'unlink']">
    Mais je trouve le drop down boutton désactivé et l'icon ne s'affiche meme pas et le titre = undefined lors de mouseOnOuver

  12. #12
    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,

    Ce qu'il faudrait déjà faire c'est un exemple basique pour s'assurer du fonctionnel. Ensuite seulement, ok pour ajouter un tree.

    Si tu as un code à tester je peux prendre un peu de temps pour ça.

    ERE

  13. #13
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Salut,

    Il y a plus ce soucis j'ai juste modifié le nom du variable command
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dojo.subscribe("dijit.Editor.getPlugin", null, function(o) {
        if (o.plugin) {
            return;
        }
        var name = o.args.name;
        if (name === "createTreeLink") {
        	o.plugin = new my.widget.editor.LinkDialog2({
        		command: "createLink"
        	});
        }
    });
    mais maintenant j'ai un soucis d'affichage du tree a l’intérieur de tooltipDialog,il affiche le tree a l’extérieur du tooltip (ci-joint un aperçu).

    Voila le code complet de mon widget:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    dojo.provide("my.widget.editor.LinkDialog2");
    dojo.require("dijit._editor.plugins.LinkDialog");
    dojo.declare(
    "my.widget.editor.LinkDialog2", dijit._editor.plugins.LinkDialog,
    {
    	myStore: null,
    	myTree: null,
    	linkDialogTemplate: [ 
         		"<table><tr><td>",
         		"<label for='${id}_urlInput'>${url}</label>",
         		"</td><td>",
         		"<input dojoType='dijit.form.ValidationTextBox' required='true' " +
         		"id='${id}_urlInput' name='urlInput' intermediateChanges='true'/>",
         		"</td></tr><tr><td>",
         		"<label for='${id}_textInput'>${text}</label>",
         		"</td><td>",
         		"<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' " +
         		"name='textInput' intermediateChanges='true'/>",
         		"</td></tr><tr><td>",
         		"<label for='${id}_targetSelect'>${target}</label>",
         		"</td><td>",
         		"<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>",
         		"<option selected='selected' value='_self'>${currentWindow}</option>",
         		"<option value='_blank'>${newWindow}</option>",
         		"<option value='_top'>${topWindow}</option>",
         		"<option value='_parent'>${parentWindow}</option>",
         		"</select>",
         		"</td></tr><tr><td colspan='2'>",
         		"<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
         		"<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
         		"</td></tr></table>"
        ].join(""),
        constructor: function(){
    		console.log('constructor');
    		this.inherited(arguments);
    	},       	
    	_initButton: function(){
    		this.inherited(arguments);
    		 //Creation de tree view
    		 //....
    		 //....
    		this.dropDown.domNode.appendChild(this.myTree.domNode);
    	}
    });
    dojo.subscribe("dijit.Editor.getPlugin", null, function(o) {
        if (o.plugin) {
            return;
        }
        var name = o.args.name;
        if (name === "createTreeLink") {
        	o.plugin = new widget.element.editor.LinkDialog2({
        		command: "createLink"
        	});
        }
    });
    Images attachées Images attachées  

  14. #14
    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 pense qu'il faut que tu déclares ton tree de la même façon que les dijit qui sont dans le tooltip.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="mytree" data-dojo-type="dijit.Tree"....
    ERE

  15. #15
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Je n'arrive pas à insérer le tree dans la variable linkDialogTemplate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    linkDialogTemplate: [
    		"<table><tr><td>",
    		"<label for='${id}_urlInput'>${url}</label>",
    		"</td><td>",
    		"<input dojoType='dijit.form.ValidationTextBox' required='true' " +
    		"id='${id}_urlInput' name='urlInput' intermediateChanges='true'/>",
    		"</td></tr><tr><td>",
    		"<label for='${id}_textInput'>${text}</label>",
    		"</td><td>",
    		"<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' " +
    		"name='textInput' intermediateChanges='true'/>",
    		"</td></tr><tr><td>",
    		"<label for='${id}_targetSelect'>${target}</label>",
    		"</td><td>",
    		"<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>",
    		"<option selected='selected' value='_self'>${currentWindow}</option>",
    		"<option value='_blank'>${newWindow}</option>",
    		"<option value='_top'>${topWindow}</option>",
    		"<option value='_parent'>${parentWindow}</option>",
    		"</select>",
    		"</td></tr><tr><td colspan='2'>",
    		"<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
    		"<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
    		"</td></tr></table>",
    		"<div id='mytree'></div>"
    	].join(""),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    _initButton: function(){
    		this.inherited(arguments);
    		var mymodel = ......
    
    		this.mytree = new dijit.Tree({
    			model			: myElement,
    			onClick	        : dojo.hitch(this, function(item){
    				this._setValueFromTree(item);
    			})
    		});
    
    		//Affecter Tree view au tooltipDialog
    		
    		console.log(dojo.byId("mytree")); //==>null
    		dojo.byId("mytree").appendChild(this.treeView.domNode);
    	},

  16. #16
    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
    Je crois qu'il est plus sage de déclarer le Tree dans le template sous la forme de code inline. Une fois que cela fonctionnera alors tu pourras envisager de passer par la création par programmation.

    ERE

  17. #17
    Membre confirmé Avatar de devkaty
    Inscrit en
    Mai 2009
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 174
    Par défaut
    Re,

    C'est résolu on faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.dropDown.containerNode.appendChild(mytree.domNode);
    au lieu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.dropDown.domNode.appendChild(mytree.domNode);
    et maintenant ça marche bien

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/11/2007, 15h47
  2. Redéfinir la méthode init
    Par aymen007 dans le forum Struts 1
    Réponses: 1
    Dernier message: 10/07/2007, 13h11
  3. [JButton]Redéfinir la méthode paint(), colorer le fond.
    Par leminipouce dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 23/01/2006, 15h51
  4. [POO] Redéfinir une méthode en se servant de l'ancien code
    Par bart64 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 31/05/2005, 13h59
  5. [.NET] Pourquoi redéfinir la méthode dispose() d'une forme?
    Par Polyptyx dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 07/09/2004, 12h10

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