[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

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

   1  // $Id: functions.js,v 1.1 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: '#ffffff'});
   9          selectedNode = null;
  10      });
  11  
  12      selectedNode = row;
  13      $(row).css({background: '#dadfe9'});
  14  
  15      $('#txtUrlPath').val( selectedNode.cells[0].firstChild.nodeValue );
  16      $('#txtUrlInternal').val( 'internal:' + selectedNode.cells[4].firstChild.nodeValue );
  17      $('#txtUrlText').val( selectedNode.cells[1].firstChild.nodeValue );
  18  
  19      var type = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'linkType' );
  20      type.onChange();
  21  }
  22  
  23  /**
  24   * loadCategories()
  25   * @param obj parent Object
  26   **/
  27  function loadCategories(obj) {
  28      var params = '';
  29      var vid = '-1';
  30      var top = 95;
  31      var objTop;
  32  
  33      if (obj != null) {
  34          var fSel = $('#browse_sel_0_sel');
  35          if (fSel !== null) {
  36              vid = $(fSel).get(0).value;
  37          }
  38          if ($(obj).attr('id') != 'browse_sel_0_sel') {
  39              params = '&ltc-term-id=' + $(obj).get(0).value;
  40          }
  41  
  42          try
  43          {
  44              objTop = $(obj).attr('id').match(/_(\d+)_sel/);
  45              top += (objTop[1] * 17);
  46          }
  47          catch (e) {
  48              top += 0;
  49          }
  50      }
  51      params = 'ltc-type=linktocontent_node&ltc-vocab-id=' + vid + params;
  52  
  53      $('#statusImg').css( {
  54          top : top + 'px'
  55      }).show();
  56  
  57      $.ajax( {
  58          type : "POST",
  59          url : Drupal.settings.basePath + 'index.php?q=linktocontent',
  60          data : params,
  61          error : function(xml, msg, exc) {
  62              $('#statusImg').hide();
  63              alert(Drupal.t('Error !msg', {'!msg' : msg + '\n' + xml.responseText }));
  64          },
  65          success : function(data) {
  66              try {
  67                  var results = eval('(' + data + ');');
  68                  _clearNodeList();
  69                  if ((obj == null) || ($(obj).get(0).value > -1)) {
  70                      _fillDropdown(obj, results);
  71                  }
  72                  _fillNodelist(results);
  73              } catch (e) {
  74                  alert(Drupal.t('Error on retrieving data from module.') + '\n' + e.name + '\n' + e.message);
  75              } finally {
  76                  $('#statusImg').hide();
  77              }
  78          }
  79      });
  80  }
  81  
  82  // dropdown functions
  83  /**
  84   * 
  85   * @access public
  86   * @return void
  87   */
  88  function _createDropdown(obj) {
  89      var dropdown;
  90      var elemname = '';
  91      if (obj == null) {
  92          elemname = 'browse_sel_-1';
  93      } else {
  94          elemname = $(obj).parent().attr('id');
  95          _removeDescendant($(obj));
  96      }
  97  
  98      var level = parseInt(elemname.substring(elemname.lastIndexOf("_") + 1, elemname.length)) + 1;
  99  
 100      var elemBase = elemname.substring(0, elemname.lastIndexOf("_") + 1);
 101  
 102      // create surrounding <div>
 103      var sel_div = $('<div></div>');
 104      $(sel_div).attr('name', elemBase + level);
 105      $(sel_div).attr('id', elemBase + level);
 106      $(sel_div).attr('style', 'display: block; margin: 1px 0; padding: 0; border: 0;');
 107  
 108      // create <select>
 109      var select = $('<select></select>');
 110      $(select).attr('size', 1);
 111      $(select).attr('name', elemBase + level + '_sel');
 112      $(select).attr('id', elemBase + level + '_sel');
 113  
 114      // add event handler
 115      $(select).change( function() {
 116          _removeDescendant($(this).parent());
 117          _clearNodeList();
 118          loadCategories($(this));
 119      });
 120  
 121      // create image (only if level > 0)
 122      if (level > 0) {
 123          var img = $('<img />');
 124          $(img).attr('id', elemname.substring(0, elemname.lastIndexOf('_') + 1) + level + '_img');
 125          $(img).attr('alt', '');
 126          $(img).attr('src', 'images/descendant.gif');
 127          // extra margin for IE
 128          $(img).css( {
 129              margin : '0px 2px',
 130              border : 0
 131          });
 132          $(img).css( {
 133              marginLeft : String((parseInt(level) - 1) * 14) + 'px',
 134              marginRight : '2px'
 135          });
 136          $(sel_div).append($(img));
 137      }
 138  
 139      $(sel_div).append($(select));
 140      $(sel_div).hide();
 141      $('#form_browse').append($(sel_div));
 142      $(sel_div).show('slow');
 143      return select;
 144  }
 145  
 146  /**
 147   * _fillDropdown
 148   * @return true if a dropdown was inserted
 149   **/
 150  function _fillDropdown(obj, results){
 151      if (results.categories != false) {
 152          var select = _createDropdown(obj);
 153          <!-- linktonode START -->
 154          $(select).addOption(-1, "Choose category");
 155          //<!-- linktonode END -->
 156          for (key in results.categories)
 157              $(select).addOption(results.categories[key].tid, results.categories[key].title);
 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.nodes == null) || (results.nodes == false))
 180          return;
 181  
 182      for (key in results.nodes) {
 183          _addNodeToList(results.nodes[key]);
 184      }
 185  }
 186  
 187  function _clearNodeList() {
 188      $('#nodelist tbody tr').each( function() {
 189          $(this).remove();
 190      });
 191  }
 192  
 193  function _addNodeToList(node) {
 194      var tr = $('<tr></tr>').appendTo('#nodelist tbody');
 195      tr.hover( function() {
 196          if (!selectedNode || this != selectedNode)
 197              $(this).css('background', '#cecece');
 198      }, function() {
 199          if (!selectedNode || this != selectedNode)
 200              $(this).css('background', 'transparent');
 201      });
 202      tr.click( function() {
 203          selectRow(this);
 204      });
 205  
 206      $('<td class="nid">' + node.href + '</td>').appendTo(tr);
 207      $('<td>' + node.title + '</td>').appendTo(tr);
 208      $('<td>' + node.date + '</td>').appendTo(tr);
 209      $('<td>' + node.author + '</td>').appendTo(tr);
 210      $('<td class="nid">' + node.orig_href + '</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