[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/ckeditor/plugins/linktomenu/jscripts/ -> functions.js (source)

   1  // $Id: functions.js,v 1.2 2009/12/04 20:36:57 wwalc Exp $
   2  
   3  function selectRow(row) {
   4      if (!row) {
   5          return;
   6      }
   7      $('#nodelist tbody tr').each( function() {
   8          $(this).css('background', 'transparent');
   9      });
  10      $(row).css('background', '#dadfe9');
  11      selectedNode = row;
  12      $('#linktomenu_url').val(row.cells[0].firstChild.nodeValue);
  13      $('#linktomenu_text').val(row.cells[1].firstChild.nodeValue);
  14  }
  15  
  16  //save node/path urls
  17  function SaveDrupalUrls()
  18  {
  19      //if ((!FCKConfig.DrupalLinkToContentSelect && FCKConfig.DrupalPathFilter) || GetE('cmbDrupalProtocol').value == 'internal') {
  20      var url = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'url' );
  21      var type = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'linkType' );
  22      
  23      if ( type.getValue() == 'internal' ) {
  24          url.setValue($('#txtUrlInternal').val());
  25      }
  26      else {
  27          url.setValue($('#txtUrlPath').val());
  28      }
  29  }
  30  
  31  /**
  32   * loadCategories()
  33   * @param obj parent Object
  34   **/
  35  function loadCategories(obj) {
  36      var params = '';
  37      var mid = '0';
  38      var top = 95;
  39      var objTop;
  40      if (obj != null) {
  41          mid = $(obj).get(0).value;
  42  
  43          try {
  44              objTop = $(obj).attr('id').match(/_(\d+)_sel/);
  45              top += (objTop[1] * 17);
  46          } catch (e) {
  47              top += 0;
  48          }
  49      }
  50      params = 'ltc-type=linktocontent_menu&ltc-menu-id=' + mid;
  51  
  52      $('#statusImg').css( {
  53          top : top + 'px'
  54      }).show();
  55  
  56      $.ajax( {
  57          type : "POST",
  58          url : Drupal.settings.basePath + 'index.php?q=linktocontent',
  59          data : params,
  60          error : function(xml, msg, exc) {
  61              $('#statusImg').hide();
  62              alert(Drupal.t('Error !msg', {'!msg' : msg + '\n' + xml.responseText }));
  63          },
  64          success : function(data) {
  65              try {
  66                  var results = eval('(' + data + ');');
  67                  _clearNodeList();
  68                  if ((obj == null) || ($(obj).get(0).value > -1)) {
  69                      _fillDropdown(obj, results);
  70                  }
  71                  _fillNodelist(results);
  72              } catch (e) {
  73                  alert(Drupal.t('Error on retrieving data from module.') + '\n' + e.name + '\n' + e.message);
  74              } finally {
  75                  $('#statusImg').hide();
  76              }
  77          }
  78      });
  79  }
  80  
  81  // dropdown functions
  82  /**
  83   * 
  84   * @access public
  85   * @return void
  86   */
  87  function _createDropdown(obj) {
  88      var dropdown;
  89      var elemname = '';
  90      if (obj == null) {
  91          elemname = 'browse_sel_-1';
  92      } else {
  93          elemname = $(obj).parent().attr('id');
  94          _removeDescendant($(obj));
  95      }
  96  
  97      var level = parseInt(elemname.substring(elemname.lastIndexOf("_") + 1, elemname.length)) + 1;
  98  
  99      var elemBase = elemname.substring(0, elemname.lastIndexOf("_") + 1);
 100  
 101      // create surrounding <div>
 102      var sel_div = $('<div></div>');
 103      $(sel_div).attr('name', elemBase + level);
 104      $(sel_div).attr('id', elemBase + level);
 105      $(sel_div).attr('style', 'display: block; margin: 1px 0; padding: 0; border: 0;');
 106  
 107      // create <select>
 108      var select = $('<select></select>');
 109      $(select).attr('size', 1);
 110      $(select).attr('name', elemBase + level + '_sel');
 111      $(select).attr('id', elemBase + level + '_sel');
 112  
 113      // add event handler
 114      $(select).change( function() {
 115          _removeDescendant($(this).parent());
 116          _clearNodeList();
 117          loadCategories($(this));
 118      });
 119  
 120      // create image (only if level > 0)
 121      if (level > 0) {
 122          var img = $('<img />');
 123          $(img).attr('id', elemname.substring(0, elemname.lastIndexOf('_') + 1) + level + '_img');
 124          $(img).attr('alt', '');
 125          $(img).attr('src', 'images/descendant.gif');
 126          // extra margin for IE
 127          $(img).css( {
 128              margin : '0px 2px',
 129              border : 0
 130          });
 131          $(img).css( {
 132              marginLeft : String((parseInt(level) - 1) * 14) + 'px',
 133              marginRight : '2px'
 134          });
 135          $(sel_div).append($(img));
 136      }
 137  
 138      $(sel_div).append($(select));
 139      $(sel_div).hide();
 140      $('#form_browse').append($(sel_div));
 141      $(sel_div).show('slow');
 142      return select;
 143  }
 144  
 145  /**
 146   * _fillDropdown
 147   * @return true if a dropdown was inserted
 148   **/
 149  function _fillDropdown(obj, results) {
 150      if (results.menus != false) {
 151          var select = _createDropdown(obj);
 152          $(select).addOption(-1, "Choose Category");
 153          for (key in results.menus) {
 154              if (results.menus[key].hasChildren) {
 155                  $(select).addOption(results.menus[key].mid, results.menus[key].title);
 156              }
 157          }
 158          return true;
 159      }
 160      return false;
 161  }
 162  
 163  /**
 164   * remove "child" elements
 165   **/
 166  function _removeDescendant(elem) {
 167      if (elem == null)
 168          return;
 169      $(elem).next().each( function() {
 170          _removeDescendant($(this));
 171          $(this).hide('slow').remove();
 172      });
 173  }
 174  
 175  // nodelist functions
 176  var selectedNode = null;
 177  
 178  function _fillNodelist(results) {
 179      if ((results == null) || (results.menus == null) || (results.menus == false))
 180          return;
 181  
 182      for (key in results.menus) {
 183          if (results.menus[key].root) {
 184              continue;
 185          }
 186          _addNodeToList(results.menus[key]);
 187      }
 188  }
 189  
 190  function _clearNodeList() {
 191      $('#nodelist tbody tr').each( function() {
 192          $(this).remove();
 193      });
 194  }
 195  
 196  function _addNodeToList(node) {
 197      var tr = $('<tr></tr>').appendTo('#nodelist tbody');
 198      tr.hover( function() {
 199          if (!selectedNode || this != selectedNode)
 200              $(this).css('background', '#cecece');
 201      }, function() {
 202          if (!selectedNode || this != selectedNode)
 203              $(this).css('background', 'transparent');
 204      });
 205      tr.click( function() {
 206          selectRow(this);
 207      });
 208  
 209      $('<td class="nid">' + node.path + '</td>').appendTo(tr);
 210      $('<td>' + node.title + '</td>').appendTo(tr);
 211  }
 212  
 213  /**
 214   * make the nodelist accessible by keyboard
 215   **/
 216  $('.accessible').keypress( function(e) {
 217      switch (e.keyCode) {
 218      case 39:
 219      case 40: // move selection down
 220              if (selectedNode == null)
 221                  selectedNode = $('#nodelist tbody tr').get(0);
 222              else
 223                  selectedNode = $(selectedNode).next('tr').get(0);
 224              selectRow(selectedNode);
 225              break;
 226          case 37:
 227          case 38: // move selection up
 228              if (selectedNode == null)
 229                  selectedNode = $('#nodelist tbody tr').get($('#nodelist tbody tr').length - 1);
 230              else
 231                  selectedNode = $(selectedNode).prev('tr').get(0);
 232              selectRow(selectedNode);
 233              break;
 234          }
 235      });
 236  
 237  // options
 238  $.fn.addOption = function() {
 239      if (arguments.length == 0)
 240          return this;
 241      // select option when added? default is false
 242      var selectOption = false;
 243      // multiple items
 244      var multiple = false;
 245      if (typeof arguments[0] == "object") {
 246          multiple = true;
 247          var items = arguments[0];
 248      }
 249      if (arguments.length >= 2) {
 250          if (typeof arguments[1] == "boolean")
 251              selectOption = arguments[1];
 252          else if (typeof arguments[2] == "boolean")
 253              selectOption = arguments[2];
 254          if (!multiple) {
 255              var value = arguments[0];
 256              var text = arguments[1];
 257          }
 258      }
 259      this.each( function() {
 260          if (this.nodeName.toLowerCase() != "select")
 261              return;
 262          if (multiple) {
 263              for (v in items) {
 264                  $(this).addOption(v, items[v], selectOption);
 265              }
 266          } else {
 267              var option = document.createElement("option");
 268              option.value = value;
 269              option.text = text;
 270              this.options.add(option);
 271          }
 272          if (selectOption) {
 273              this.options[this.options.length - 1].selected = true;
 274          }
 275      })
 276      return this;
 277  }
 278  
 279  $.fn.removeOption = function() {
 280      if (arguments.length == 0)
 281          return this;
 282      if (typeof arguments[0] == "string")
 283          var value = arguments[0];
 284      else if (typeof arguments[0] == "number")
 285          var index = arguments[0];
 286      else
 287          return this;
 288      this.each( function() {
 289          if (this.nodeName.toLowerCase() != "select")
 290              return;
 291          if (value) {
 292              var optionsLength = this.options.length;
 293              for ( var i = optionsLength - 1; i >= 0; i--) {
 294                  if (this.options[i].value == value) {
 295                      this.options[i] = null;
 296                  }
 297              }
 298          } else {
 299              this.remove(index);
 300          }
 301      })
 302      return this;
 303  }


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