[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/libraries/ckeditor/_source/plugins/scayt/dialogs/ -> options.js (source)

   1  /*

   2  Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.

   3  For licensing, see LICENSE.html or http://ckeditor.com/license

   4  */
   5  
   6  CKEDITOR.dialog.add( 'scaytcheck', function( editor )
   7  {
   8      var firstLoad = true,
   9          captions,
  10          doc = CKEDITOR.document,
  11          tags = [],
  12          i,
  13          contents = [],
  14          userDicActive = false,
  15          dic_buttons = [
  16              // [0] contains buttons for creating

  17              "dic_create,dic_restore",
  18              // [1] contains buton for manipulation

  19              "dic_rename,dic_delete"
  20          ],
  21          optionsIds= [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
  22  
  23      // common operations

  24  
  25  	function getBOMAllOptions () {
  26           return document.forms.optionsbar["options"];
  27      }
  28  	function getBOMAllLangs () {
  29           return document.forms.languagesbar["scayt_lang"];
  30      }
  31  
  32  	function setCheckedValue(radioObj, newValue) {
  33          if (!radioObj)
  34              return;
  35          var radioLength = radioObj.length;
  36          if (radioLength == undefined) {
  37              radioObj.checked = (radioObj.value == newValue.toString());
  38              return;
  39          }
  40          for (var i = 0; i < radioLength; i++) {
  41              radioObj[i].checked = false;
  42              if (radioObj[i].value == newValue.toString()) {
  43                  radioObj[i].checked = true;
  44              }
  45          }
  46      }
  47  
  48      var tags_contents =  [
  49                  {
  50                      id : 'options',
  51                      label : editor.lang.scayt.optionsTab,
  52                      elements : [
  53                          {
  54                              type : 'html',
  55                              id : 'options',
  56                              html :     '<form name="optionsbar"><div class="inner_options">' +
  57                                      '    <div class="messagebox"></div>' +
  58                                      '    <div style="display:none;">' +
  59                                      '        <input type="checkbox" name="options"  id="allCaps" />' +
  60                                      '        <label for="allCaps" id="label_allCaps"></label>' +
  61                                      '    </div>' +
  62                                      '    <div style="display:none;">' +
  63                                      '        <input name="options" type="checkbox"  id="ignoreDomainNames" />' +
  64                                      '        <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>' +
  65                                      '    </div>' +
  66                                      '    <div style="display:none;">' +
  67                                      '    <input name="options" type="checkbox"  id="mixedCase" />' +
  68                                      '        <label for="mixedCase" id="label_mixedCase"></label>' +
  69                                      '    </div>' +
  70                                      '    <div style="display:none;">' +
  71                                      '        <input name="options" type="checkbox"  id="mixedWithDigits" />' +
  72                                      '        <label for="mixedWithDigits" id="label_mixedWithDigits"></label>' +
  73                                      '    </div>' +
  74                                      '</div></form>'
  75                          }
  76                      ]
  77                  },
  78                  {
  79                      id : 'langs',
  80                      label : editor.lang.scayt.languagesTab,
  81                      elements : [
  82                          {
  83                              type : 'html',
  84                              id : 'langs',
  85                              html :     '<form name="languagesbar"><div class="inner_langs">' +
  86                                      '    <div class="messagebox"></div>    ' +
  87                                      '   <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol" ></div>' +
  88                                      '   <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol"></div>' +
  89                                      '</div></form>'
  90                          }
  91                      ]
  92                  },
  93                  {
  94                      id : 'dictionaries',
  95                      label : editor.lang.scayt.dictionariesTab,
  96                      elements : [
  97                          {
  98                              type : 'html',
  99                              style: '',
 100                              id : 'dictionaries',
 101                              html :     '<form name="dictionarybar"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">' +
 102                                      '    <div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>' +
 103                                      '    <div style="margin:5px auto; width:80%;white-space:normal;"> ' +
 104                                      '       <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>'+
 105                                      '        <span class="cke_dialog_ui_labeled_content" >'+
 106                                      '            <div class="cke_dialog_ui_input_text">'+
 107                                      '                <input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>'+
 108                                      '        </div></span></div>'+
 109                                      '        <div style="margin:5px auto; width:80%;white-space:normal;">'+
 110                                      '            <a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">'+
 111                                      '                </a>' +
 112                                      '            <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">'+
 113                                      '                </a>' +
 114                                      '            <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">'+
 115                                      '                </a>' +
 116                                      '            <a  style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">'+
 117                                      '                </a>' +
 118                                      '        </div>' +
 119                                      '    <div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div>' +
 120                                      '</div></form>'
 121                          }
 122                      ]
 123                  },
 124                  {
 125                      id : 'about',
 126                      label : editor.lang.scayt.aboutTab,
 127                      elements : [
 128                          {
 129                              type : 'html',
 130                              id : 'about',
 131                              style : 'margin: 5px 5px;',
 132                              html : '<div id="scayt_about"></div>'
 133                          }
 134                      ]
 135                  }
 136              ];
 137  
 138      var dialogDefiniton = {
 139          title : editor.lang.scayt.title,
 140          minWidth : 360,
 141          minHeight : 220,
 142          onShow : function()
 143          {
 144              var dialog = this;
 145              dialog.data = editor.fire( 'scaytDialog', {} );
 146              dialog.options = dialog.data.scayt_control.option();
 147              dialog.sLang = dialog.data.scayt_control.sLang;
 148  
 149              if ( !dialog.data || !dialog.data.scayt || !dialog.data.scayt_control )
 150              {
 151                  alert( 'Error loading application service' );
 152                  dialog.hide();
 153                  return;
 154              }
 155  
 156              var stop = 0;
 157              if ( firstLoad )
 158              {
 159                  dialog.data.scayt.getCaption( editor.langCode || 'en', function( caps )
 160                  {
 161                      if ( stop++ > 0 )    // Once only
 162                          return;
 163                      captions = caps;
 164                      init_with_captions.apply( dialog );
 165                      reload.apply( dialog );
 166                      firstLoad = false;
 167                  });
 168              }
 169              else
 170                  reload.apply( dialog );
 171  
 172              dialog.selectPage( dialog.data.tab );
 173          },
 174          onOk : function()
 175          {
 176              var scayt_control =  this.data.scayt_control;
 177              scayt_control.option( this.options );
 178              // Setup languge if it was changed.

 179              var csLang = this.chosed_lang;
 180              scayt_control.setLang( csLang );
 181              scayt_control.refresh();
 182          },
 183          onCancel: function()
 184          {
 185              var o = getBOMAllOptions();
 186              for (i in o)
 187                  o[i].checked = false;
 188  
 189              setCheckedValue(getBOMAllLangs(),"");
 190          },
 191          contents : contents
 192      };
 193  
 194      var scayt_control = CKEDITOR.plugins.scayt.getScayt( editor );
 195  
 196      tags = CKEDITOR.plugins.scayt.uiTabs;
 197  
 198      for ( i in tags )
 199      {
 200          if ( tags[ i ] == 1 )
 201              contents[ contents.length ] = tags_contents[ i ];
 202      }
 203      if ( tags[2] == 1 )
 204          userDicActive = true;
 205  
 206  
 207      var init_with_captions = function()
 208      {
 209          var dialog = this,
 210              lang_list = dialog.data.scayt.getLangList(),
 211              buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ],
 212              labels = optionsIds,
 213              i;
 214  
 215          // Add buttons titles

 216          if ( userDicActive )
 217          {
 218              for ( i = 0; i < buttons.length; i++ )
 219              {
 220                  var button = buttons[ i ];
 221                  doc.getById( button ).setHtml( '<span class="cke_dialog_ui_button">' + captions[ 'button_' + button]  +'</span>' );
 222              }
 223              doc.getById( 'dic_info' ).setHtml( captions[ 'dic_info' ] );
 224          }
 225  
 226  
 227          // Fill options and dictionary labels.

 228          if ( tags[0] == 1 )
 229          {
 230              for ( i in labels )
 231              {
 232                  var label = 'label_' + labels[ i ],
 233                      labelElement = doc.getById( label );
 234  
 235                  if (  'undefined' != typeof labelElement
 236                     && 'undefined' != typeof captions[ label ]
 237                     && 'undefined' != typeof dialog.options[labels[ i ]] )
 238                  {
 239                      labelElement.setHtml( captions[ label ] );
 240                      var labelParent = labelElement.getParent();
 241                      labelParent.$.style.display = "block";
 242                  }
 243              }
 244          }
 245  
 246          var about = '<p><img src="' + window.scayt.getAboutInfo().logoURL + '" /></p>' +
 247                  '<p>' + captions[ 'version' ] + window.scayt.getAboutInfo().version.toString() + '</p>' +
 248                  '<p>' + captions[ 'about_throwt_copy' ] + '</p>';
 249  
 250          doc.getById( 'scayt_about' ).setHtml( about );
 251  
 252          // Create languages tab.

 253          var createOption = function( option, list )
 254          {
 255              var label = doc.createElement( 'label' );
 256              label.setAttribute( 'for', 'cke_option' + option );
 257              label.setHtml( list[ option ] );
 258  
 259              if ( dialog.sLang == option )    // Current.
 260                  dialog.chosed_lang = option;
 261  
 262              var div = doc.createElement( 'div' );
 263              var radio = CKEDITOR.dom.element.createFromHtml( '<input id="cke_option' +
 264                      option + '" type="radio" ' +
 265                      ( dialog.sLang == option ? 'checked="checked"' : '' ) +
 266                      ' value="' + option + '" name="scayt_lang" />' );
 267  
 268              radio.on( 'click', function()
 269                  {
 270                      this.$.checked = true;
 271                      dialog.chosed_lang = option;
 272                  });
 273  
 274              div.append( radio );
 275              div.append( label );
 276  
 277              return {
 278                  lang : list[ option ],
 279                  code : option,
 280                  radio : div
 281              };
 282          };
 283  
 284          var langList = [];
 285          if (tags[1] ==1 )
 286          {
 287              for ( i in lang_list.rtl )
 288                  langList[ langList.length ] = createOption( i, lang_list.ltr );
 289  
 290              for ( i in lang_list.ltr )
 291                  langList[ langList.length  ] = createOption( i, lang_list.ltr );
 292  
 293              langList.sort(     function( lang1, lang2 )
 294                  {
 295                      return ( lang2.lang > lang1.lang ) ? -1 : 1 ;
 296                  });
 297  
 298              var fieldL = doc.getById( 'scayt_lcol' ),
 299                  fieldR = doc.getById( 'scayt_rcol' );
 300              for ( i=0; i < langList.length; i++ )
 301              {
 302                  var field = ( i < langList.length / 2 ) ? fieldL : fieldR;
 303                  field.append( langList[ i ].radio );
 304              }
 305          }
 306  
 307          // user dictionary handlers

 308          var dic = {};
 309          dic.dic_create = function( el, dic_name , dic_buttons )
 310          {
 311              // comma separated button's ids include repeats if exists

 312              var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
 313  
 314              var err_massage = captions["err_dic_create"];
 315              var suc_massage = captions["succ_dic_create"];
 316  
 317              window.scayt.createUserDictionary(dic_name,
 318                  function(arg)
 319                  {
 320                      hide_dic_buttons ( all_buttons );
 321                      display_dic_buttons ( dic_buttons[1] );
 322                      suc_massage = suc_massage.replace("%s" , arg.dname );
 323                      dic_success_message (suc_massage);
 324                  },
 325                  function(arg)
 326                  {
 327                      err_massage = err_massage.replace("%s" ,arg.dname );
 328                      dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
 329                  });
 330  
 331          };
 332  
 333          dic.dic_rename = function( el, dic_name )
 334          {
 335              //

 336              // try to rename dictionary

 337              var err_massage = captions["err_dic_rename"] || "";
 338              var suc_massage = captions["succ_dic_rename"] || "";
 339              window.scayt.renameUserDictionary(dic_name,
 340                  function(arg)
 341                      {
 342                          suc_massage = suc_massage.replace("%s" , arg.dname );
 343                          set_dic_name( dic_name );
 344                          dic_success_message ( suc_massage );
 345                      },
 346                  function(arg)
 347                      {
 348                          err_massage = err_massage.replace("%s" , arg.dname  );
 349                          set_dic_name( dic_name );
 350                          dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
 351                      });
 352          };
 353  
 354          dic.dic_delete = function ( el, dic_name , dic_buttons )
 355          {
 356              var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
 357              var err_massage = captions["err_dic_delete"];
 358              var suc_massage = captions["succ_dic_delete"];
 359  
 360              // try to delete dictionary

 361              window.scayt.deleteUserDictionary(
 362                  function(arg)
 363                  {
 364                      suc_massage = suc_massage.replace("%s" , arg.dname );
 365                      hide_dic_buttons ( all_buttons );
 366                      display_dic_buttons ( dic_buttons[0] );
 367                      set_dic_name( "" ); // empty input field

 368                      dic_success_message( suc_massage );
 369                  },
 370                  function(arg)
 371                  {
 372                      err_massage = err_massage.replace("%s" , arg.dname );
 373                      dic_error_message(err_massage);
 374                  });
 375          };
 376  
 377          dic.dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
 378              {
 379                  // try to restore existing dictionary

 380                  var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
 381                  var err_massage = captions["err_dic_restore"];
 382                  var suc_massage = captions["succ_dic_restore"];
 383  
 384                  window.scayt.restoreUserDictionary(dic_name,
 385                      function(arg)
 386                      {
 387                          suc_massage = suc_massage.replace("%s" , arg.dname );
 388                          hide_dic_buttons ( all_buttons );
 389                          display_dic_buttons(dic_buttons[1]);
 390                          dic_success_message( suc_massage );
 391                      },
 392                      function(arg)
 393                      {
 394                          err_massage = err_massage.replace("%s" , arg.dname );
 395                          dic_error_message( err_massage );
 396                      });
 397              };
 398  
 399  		function onDicButtonClick( ev )
 400          {
 401              var dic_name = doc.getById('dic_name').getValue();
 402              if ( !dic_name )
 403              {
 404                  dic_error_message(" Dictionary name should not be empty. ");
 405                  return false;
 406              }
 407              try{
 408                  var el = id = ev.data.getTarget().getParent();
 409                  var id = el.getId();
 410                  dic[ id ].apply( null, [ el, dic_name, dic_buttons ] );
 411              }catch(err){
 412                  dic_error_message(" Dictionary error. ");
 413              }
 414  
 415              return true;
 416          }
 417  
 418          // ** bind event listeners

 419          var arr_buttons = ( dic_buttons[0] + ',' + dic_buttons[1] ).split( ',' ),
 420              l;
 421  
 422          for ( i = 0, l = arr_buttons.length ; i < l ; i += 1 )
 423          {
 424              var dic_button = doc.getById(arr_buttons[i]);
 425              if ( dic_button )
 426                  dic_button.on( 'click', onDicButtonClick, this );
 427          }
 428      };
 429  
 430      var reload = function()
 431      {
 432          var dialog = this;
 433          // for enabled options tab

 434          if (tags[0] == 1){
 435              var opto = getBOMAllOptions();
 436  
 437              // Animate options.

 438              for ( var k=0,l = opto.length; k<l;k++ )
 439              {
 440  
 441                  var i = opto[k].id;
 442                  var checkbox = doc.getById( i );
 443  
 444                  if ( checkbox )
 445                  {
 446                      opto[k].checked = false;
 447                      //alert (opto[k].removeAttribute)

 448                      if ( dialog.options[ i ] == 1 )
 449                      {
 450                          opto[k].checked = true;
 451                      }
 452  
 453  
 454                      // Bind events. Do it only once.

 455                      if ( firstLoad )
 456                      {
 457                          checkbox.on( 'click', function()
 458                          {
 459                              dialog.options[ this.getId() ] = this.$.checked ? 1 : 0 ;
 460                          });
 461                      }
 462                  }
 463              }
 464          }
 465  
 466          //for enabled languages tab

 467          if ( tags[1] == 1 )
 468          {
 469              var domLang = doc.getById("cke_option"+dialog.sLang);
 470              setCheckedValue(domLang.$,dialog.sLang);
 471          }
 472  
 473          // * user dictionary

 474          if ( userDicActive )
 475          {
 476              window.scayt.getNameUserDictionary(
 477                  function( o )
 478                  {
 479                      var dic_name = o.dname;
 480                      hide_dic_buttons( dic_buttons[0] + ',' + dic_buttons[1] );
 481                      if ( dic_name )
 482                      {
 483                          doc.getById( 'dic_name' ).setValue(dic_name);
 484                          display_dic_buttons( dic_buttons[1] );
 485                      }
 486                      else
 487                          display_dic_buttons( dic_buttons[0] );
 488  
 489                  },
 490                  function ()
 491                  {
 492                      doc.getById( 'dic_name' ).setValue("");
 493                  });
 494              dic_success_message("");
 495          }
 496  
 497      };
 498  
 499  	function dic_error_message ( m )
 500      {
 501          doc.getById('dic_message').setHtml('<span style="color:red;">' + m + '</span>' );
 502      }
 503  	function dic_success_message ( m )
 504      {
 505          doc.getById('dic_message').setHtml('<span style="color:blue;">' + m + '</span>') ;
 506      }
 507  	function display_dic_buttons ( sIds )
 508      {
 509  
 510          sIds = String( sIds );
 511          var aIds = sIds.split(',');
 512          for ( var i=0, l = aIds.length; i < l ; i+=1)
 513          {
 514              doc.getById( aIds[i] ).$.style.display = "inline";
 515          }
 516  
 517      }
 518  	function hide_dic_buttons ( sIds )
 519      {
 520          sIds = String( sIds );
 521          var aIds = sIds.split(',');
 522          for ( var i = 0, l = aIds.length; i < l ; i += 1 )
 523          {
 524              doc.getById( aIds[i] ).$.style.display = "none";
 525          }
 526      }
 527  	function set_dic_name ( dic_name )
 528      {
 529          doc.getById('dic_name').$.value= dic_name;
 530      }
 531  
 532      return dialogDefiniton;
 533  });


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7