[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

/sites/all/modules/ckeditor/plugins/linktonode/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: '#ffffff'});
   8          selectedNode = null;
   9      });
  10  
  11      selectedNode = row;
  12      $(row).css({background: '#dadfe9'});
  13  
  14      $('#txtUrlPath').val( selectedNode.cells[0].firstChild.nodeValue );
  15      $('#txtUrlInternal').val( 'internal:' + selectedNode.cells[4].firstChild.nodeValue );
  16      $('#txtUrlText').val( selectedNode.cells[1].firstChild.nodeValue );
  17  
  18      var type = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'linkType' );
  19      type.onChange();
  20  }
  21  
  22  /**
  23   * loadCategories()
  24   * @param obj parent Object
  25   **/
  26  function loadCategories(obj) {
  27      var params = '';
  28      var vid = '-1';
  29      var top = 95;
  30      var objTop;
  31  
  32      if (obj != null) {
  33          var fSel = $('#browse_sel_0_sel');
  34          if (fSel !== null) {
  35              vid = $(fSel).get(0).value;
  36          }
  37          if ($(obj).attr('id') != 'browse_sel_0_sel') {
  38              params = '&ltc-term-id=' + $(obj).get(0).value;
  39          }
  40  
  41          try
  42          {
  43              objTop = $(obj).attr('id').match(/_(\d+)_sel/);
  44              top += (objTop[1] * 17);
  45          }
  46          catch (e) {
  47              top += 0;
  48          }
  49      }
  50      params = 'ltc-type=linktocontent_node&ltc-vocab-id=' + vid + params;
  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.categories != false) {
 151          var select = _createDropdown(obj);
 152          <!-- linktonode START -->
 153          $(select).addOption(-1, "Choose category");
 154          //<!-- linktonode END -->
 155          for (key in results.categories)
 156              $(select).addOption(results.categories[key].tid, results.categories[key].title);
 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.nodes == null) || (results.nodes == false))
 179          return;
 180  
 181      for (key in results.nodes) {
 182          _addNodeToList(results.nodes[key]);
 183      }
 184  }
 185  
 186  function _clearNodeList() {
 187      $('#nodelist tbody tr').each( function() {
 188          $(this).remove();
 189      });
 190  }
 191  
 192  function _addNodeToList(node) {
 193      var tr = $('<tr></tr>').appendTo('#nodelist tbody');
 194      tr.hover( function() {
 195          if (!selectedNode || this != selectedNode)
 196              $(this).css('background', '#cecece');
 197      }, function() {
 198          if (!selectedNode || this != selectedNode)
 199              $(this).css('background', 'transparent');
 200      });
 201      tr.click( function() {
 202          selectRow(this);
 203      });
 204  
 205      $('<td class="nid">' + node.href + '</td>').appendTo(tr);
 206      $('<td>' + node.title + '</td>').appendTo(tr);
 207      $('<td>' + node.date + '</td>').appendTo(tr);
 208      $('<td>' + node.author + '</td>').appendTo(tr);
 209      $('<td class="nid">' + node.orig_href + '</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