javascript - CKEditor discards widget data after switching to source mode -


i developing simple widget using following code. can please explain me why attribute , text iv set turn undefined after switching "source mode"?

<pre>     /*     /dialogs/b2eupobject.js     */      ckeditor.dialog.add( 'b2eupobject', function( editor ) {         return {             title: 'edit simple box',             minwidth: 200,             minheight: 100,             contents: [                 {                     id: 'info',                     elements: [                         {                             id: 'objectid',                             type: 'select',                             label: 'objectname',                             items: [ ['select', '-1' ],                                ['first name', '1' ],                                ['last name', '2' ],                              ],                             setup: function( widget ) {                                 this.setvalue( widget.data.title );                                 //this.setvalue(widget.data.desc);                             },                             commit: function( widget ) {                                  widget.setdata( 'title', this.getvalue() );                                 var input = this.getinputelement().$;                                 widget.setdata('desc',input.options[ input.selectedindex ].text);                              }                         },                       ]                 }             ],             onshow: function() {                              // code executed when dialog window loaded. function defined above onok function                             var selection = editor.getselection(); //get element selected user (either highlighted or having caret inside)                             var element = selection.getstartelement(); // element in selection starts                             if ( element )                             element = element.getascendant( 'em', true ); // abbr element                             console.log(this);                 },             onok: function() {                              // code executed when dialog window loaded. function defined above onok function                             var selection = editor.getselection(); //get element selected user (either highlighted or having caret inside)                             var element = selection.getstartelement(); // element in selection starts                          //  if ( element )                          console.log (element);                             console.log(this);                 }             };     } ); </pre> <pre>     /*     plugin.js      */      ckeditor.plugins.add( 'b2eupobject', {               requires: 'widget', //reference generic widget plugin provides widget api             icons: 'b2eupobject',              init: function( editor ) {             ckeditor.dialog.add( 'b2eupobject', this.path + 'dialogs/b2eupobject.js' );             editor.widgets.add( 'b2eupobject', {                 button: 'insert user object',                 template:'<em class="b2eup">test </em>',                 toolbar:'widgets',                 parts: {elm: 'em.b2eup'},  //this css selector of element within template above want target                  allowedcontent: 'em ( b2eup) [title]',                 requiredcontent : 'em(b2eup) [title]',                 dialog: 'b2eupobject',                  init: function (widget) {                     console.log("widget init : "+widget);                     // widget.parts.elm.setattribute('title',this.data.title);                      // widget.parts.elm.sethtml(this.data.desc);                 },                 data: function (widget) {                     this.parts.elm.setattribute('title',this.data.title);                      this.parts.elm.sethtml(this.data.desc);                 },                 upcast: function( element ) {                     alert(element.name == 'em' && element.hasclass( 'b2eup' ));                     return element.name == 'em' && element.hasclass( 'b2eup' );                     },              } );                var plugindirectory = this.path;             editor.addcontentscss( plugindirectory + 'style/style.css' );              if ( editor.contextmenu ) {// check if contextmenu plugin exsists                  editor.addmenugroup( 'b2eupgrougroup' ); // register new menu group called abbrgroup.                 editor.addmenuitem( 'b2eupitem', { //register new menu item belong newly created group.                 label: 'edit user object',                 icon: this.path + 'icons/b2eupobject.png',                 command: 'b2eupobject',                 group: 'b2eupgrougroup'                 });             editor.contextmenu.addlistener( function( element ) { // add event listener function called whenever context menu fired.             if ( element.getascendant( 'em', true ) ) {                 // check if element of type abbr                 return { simpleboxitem: ckeditor.tristate_off };                 }                 });                 };              },        enter code here      } ); </pre> 

i'm using ckeditor version 4.5 , have both widget , dialog plugins installed. ******* addition ******

when return source mode in editor can see upcast function invoked. writing log, can see returns true , element object :

ff console:

attributes: object { class="b2eup",  title="1",  data-cke-widget-data="%7b%7d",  more...} children:[object { value="first name",  _={...},  parent={...},  more...}] 


Comments