[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

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

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


Generated: Mon Jul 9 18:01:44 2012 Cross-referenced by PHPXref 0.7