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 :

Création d'un dijit editor programmaticalement [Dojo]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut Création d'un dijit editor programmaticalement
    Bonjour


    J'ai un problème à la création de mon éditeur programmaticalement. Mon javascript s’exécute correctement sauf sur la fin dans le dojo.ready. Bref, je n'ai pas d'éditeur qui apparaît.


    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    function edit(){
    // fonction de sauvegarde perso
        dojo.declare("mySavePlugin",
        				[dojox.editor.plugins.Save],
        				{
                			save: function(content)
                			{
    	        	            // on défini le div dans lequel s'affiche le contenu
                				// il est défini plus bas.
    	        				//var contentNode = dojo.byId("courseContent");
     
        						// on cré une fenetre
        						var dialog = new dijit.Dialog
        						(
        						  {
        						      title: "Sauvegarde",
        						      content: "<div id='dialognode'><div>",
        						      style: "width: 300px",
        						      id: "dialog",
        						      class: "tundra"
        						  }
        						);
     
        						dojo.body().appendChild(dialog.domNode);
     
        						//showing the course form
        						dialog.domNode.appendChild(courseForm);
        						//changing hidden fields
        						dojo.ready(function(){
            						dojo.byId('course_content').value = content;
            						dojo.byId('course_category_id').value = 1;
            						//dojo.byId('course_id').value = 2;
        						});
     
     
        						dialog.startup();
        					    //alert(dialog.content);
        					    dialog.show();
     
        						//dialog.hide();
    			                //postwith("edit", content);
     
    			                this.inherited(arguments);
    			            }
        				}
        			);
     
        //application de la sauvegarde perso
        dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",
        				null,
        				function(o)
        				{
        					if (o.plugin)
        					{
        						return;
        					}
        					var name = o.args.name.toLowerCase();
     
        					if (name === "mysave")
        					{
        						o.plugin = new mySavePlugin(
        						{
        							url: ("url" in o.args) ? o.args.url : "",
        							logResults: ("logResults" in o.args) ? o.args.logResults : true
        						});
        					}
        				}
        			);
     
        //Now we can parse the page since we defined our save plugin above.
        dojo.parser.parse();
     
        //hidding the form
    	var contentNode = document.getElementById("content");
    	var courseForm = document.getElementById("course_form");
    	contentNode.removeChild(courseForm);
     
     
        //creation du textarea
    //	var textarea = document.createElement("div");
    //    contentNode.appendChild(textarea);
    	//var dojoEditor = document.getElementById("dojoEditor");
     
     
      	//creation et parametrage de l'editeur
    	dojo.ready(  
    		      function() {    
    		    		var textarea = document.createElement("div");
    		    	    contentNode.appendChild(textarea);
     
    		    	  var myEditor = new dijit.Editor(
    		    				  {
    		    					  id: "textarea",
    		    					  class: "tundra",
    		    					  height: '500px',
    		    					  width: '300px',
    		    					  plugins: ['undo','redo','|',
    		    					            'cut','copy','paste','selectAll','|',
    		    					            'bold','italic','underline','strikethrough','subscript','superscript','|',
    		    					            'indent', 'outdent', 'justifyLeft', 'justifyCenter', 'justifyRight','justifyFull','|',
    		    					            'delete','removeFormat','||'],
    		    					  extraPlugins: ['toggleDir','|',
    		    					                 'createLink','unlink','insertImage',{name: 'uploadImage'},'|',
    		    					                 {name: 'fontName', plainText: true}, {name: 'fontSize', plainText: true}, {name: 'formatBlock', plainText: true},'|',								                 
    //		    							                 'foreColor', 'hiliteColor','|',
    		    					                 {name: 'fullscreen', zIndex: 900},'|',
    		    					                 'viewSource','|',
    		    					                 'print','|',
    		    					                 {name: 'newpage', content: 'This is some <b>custom</b> content!'},'|',
    //		    							                 {name: 'prettyprint', indentBy: 3, lineLength: 80, entityMap: [['<', 'lt'],['>', 'gt']], dojox.html.entities.html.concat(dojox.html.entities.latin, xhtml: true {name: 'prettyprint'},'|',
    		    					                 'preview','|',
    		    					                 {name: 'mySave', url: '/course/edit'},'|',
    		    					                 {name: 'normalizeindentoutdent', indentBy: 3, indentUnits: "em"},'|',
    		    					                 'insertEntity','|',
    		    					                 'breadcrumb','|']
    		    				  }
    		    				  , textarea
    		    			   );
    		      }    
    		   ); 
     
     
    }
    NB : j'utilise le ZF (php) et avant une modification minime du contrôler, j'avais effectivement un éditeur qui s'affichait mais je n'arrive pas à le réafficher. Voilà le code du contrôler =>

    Code php : 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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    public function editAction(){
        	$this->view->actionName ="edit";
        	$form = new Default_Form_Course();
        	//if the course is posted
        	if ($this->getRequest()->isPost()){
            	if ($form->isValid($_POST)) {
            		$courses = new Default_Model_DbTable_Course();
    			$row = $courses->createRow();
            		//required :
            		//$row->course_id = $form->getSubForm('course_subform')->getValue('course_id');
            		//retrieving new course id
            		if ($form->getSubForm('course_subform')->getValue('course_id') == 0){
           				$sql = 'SELECT max(course_id) FROM course';  
    				$query = $courses->getAdapter()->query($sql);
    				$result = $query->fetchAll();
    				$row->course_id = $result[0]['max(course_id)'] + 1;
            		}
            		$row->category_id = $form->getSubForm('course_subform')->getValue('course_category_id');
            		//$row->course_revision = $form->getSubForm('course_subform')->getValue('course_revision');
            		$row->course_revision = 1;
            		$row->course_date = $form->getSubForm('course_subform')->getValue('course_date');
            		//$row->course_type = $form->getSubForm('course_subform')->getValue('course_type');
            		$row->course_type = 'default';
            		//retrieving user_id
            		$auth 	 = Zend_Auth::getInstance();
            		$user_id = $auth->getStorage()->read()->user_id;
            		$row->user_id = $user_id;
            		//others fields
            		$row->course_name = $form->getSubForm('course_subform')->getValue('course_name');
            		$row->course_about = $form->getSubForm('course_subform')->getValue('course_about');
            		$row->course_update_type = $form->getSubForm('course_subform')->getValue('course_update_type');
            		$row->course_update_comment = $form->getSubForm('course_subform')->getValue('course_update_comment');
            		$row->course_content = $form->getSubForm('course_subform')->getValue('course_content');
            		$row->save();
            		$this->_redirect('/course/index/');
            	} 
            	else {
    //                	Zend_Debug::dump($_POST);
    //                	exit();
            		$form->populate($_POST);
            	}
            }
            $this->view->courseForm = $form;
            // dojo editor specific css
        	$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/dojox/editor/plugins/resources/css/Save.css');
        	$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/dojox/editor/plugins/resources/css/Preview.css');	 
        	$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/dojox/editor/plugins/resources/css/FindReplace.css');
        	$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/dojox/editor/plugins/resources/css/InsertEntity.css');  	 
        	$this->view->headLink()->appendStylesheet($this->view->baseUrl() . '/dojox/editor/plugins/resources/css/Breadcrumb.css');
             //dojo module to include
             $this->view->dojo()->requireModule("dijit.form.DateTextBox")
             	->requireModule("dojo.parser")
             	->requireModule("dijit.Editor")
    		->requireModule("dijit._editor.plugins.ToggleDir")
             	->requireModule("dijit._editor.plugins.FontChoice")
             	->requireModule("dijit._editor.plugins.LinkDialog")
             	->requireModule("dijit._editor.plugins.AlwaysShowToolbar")
    //         	->requireModule("dijit.editor._plugins.TextColor")
    		->requireModule("dijit._editor.plugins.FullScreen")
    		->requireModule("dijit._editor.plugins.ViewSource")
    		->requireModule("dijit._editor.plugins.Print")
    		->requireModule("dijit._editor.plugins.NewPage")
    //		->requireModule("dojox.editor.plugins.PrettyPrint")
    		->requireModule("dojox.editor.plugins.Preview")
    		->requireModule("dojox.editor.plugins.Save")
    		->requireModule("dojox.editor.plugins.ToolbarLineBreak")
    		->requireModule("dojox.editor.plugins.FindReplace")
    		->requireModule("dojox.editor.plugins.InsertEntity")
    		->requireModule("dojox.editor.plugins.NormalizeIndentOutdent")
    		->requireModule("dojox.editor.plugins.Breadcrumb")
    		->requireModule("dojox.editor.plugins.UploadImage")
    		->requireModule("dijit.Dialog")
             	->requireModule("dojo.NodeList-fx")
             //custom code
    		->addLayer($this->view->baseUrl() . '/js/edit.js')
    		//javascript run at initialisation
    		->addJavascript('dojo.addOnLoad(function(){edit();});');
        }

    Merci à ceux qui voudront bien m'aider.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    En fait je pense que c'est un problème de css.

    A vérifier !

    Edit :
    Après avoir testé sans css il me semble plutôt que c'est un problème avec dojo.addOnLoad qui serait déclencher avant que le dojo.parser ait terminé sa besogne.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    il manquait juste


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

Discussions similaires

  1. Création d'un HTML editor
    Par keybarto dans le forum C#
    Réponses: 1
    Dernier message: 16/07/2012, 09h36
  2. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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