| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
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 = '<c-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<c-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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |