| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
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 = '<c-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<c-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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |