| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 // $Id: functions.js,v 1.2 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', 'transparent'); 9 }); 10 $(row).css('background', '#dadfe9'); 11 selectedNode = row; 12 $('#linktomenu_url').val(row.cells[0].firstChild.nodeValue); 13 $('#linktomenu_text').val(row.cells[1].firstChild.nodeValue); 14 } 15 16 //save node/path urls 17 function SaveDrupalUrls() 18 { 19 //if ((!FCKConfig.DrupalLinkToContentSelect && FCKConfig.DrupalPathFilter) || GetE('cmbDrupalProtocol').value == 'internal') { 20 var url = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'url' ); 21 var type = CKEDITOR._._linkToNodeDialog.getContentElement( 'info', 'linkType' ); 22 23 if ( type.getValue() == 'internal' ) { 24 url.setValue($('#txtUrlInternal').val()); 25 } 26 else { 27 url.setValue($('#txtUrlPath').val()); 28 } 29 } 30 31 /** 32 * loadCategories() 33 * @param obj parent Object 34 **/ 35 function loadCategories(obj) { 36 var params = ''; 37 var mid = '0'; 38 var top = 95; 39 var objTop; 40 if (obj != null) { 41 mid = $(obj).get(0).value; 42 43 try { 44 objTop = $(obj).attr('id').match(/_(\d+)_sel/); 45 top += (objTop[1] * 17); 46 } catch (e) { 47 top += 0; 48 } 49 } 50 params = 'ltc-type=linktocontent_menu<c-menu-id=' + mid; 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.menus != false) { 151 var select = _createDropdown(obj); 152 $(select).addOption(-1, "Choose Category"); 153 for (key in results.menus) { 154 if (results.menus[key].hasChildren) { 155 $(select).addOption(results.menus[key].mid, results.menus[key].title); 156 } 157 } 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.menus == null) || (results.menus == false)) 180 return; 181 182 for (key in results.menus) { 183 if (results.menus[key].root) { 184 continue; 185 } 186 _addNodeToList(results.menus[key]); 187 } 188 } 189 190 function _clearNodeList() { 191 $('#nodelist tbody tr').each( function() { 192 $(this).remove(); 193 }); 194 } 195 196 function _addNodeToList(node) { 197 var tr = $('<tr></tr>').appendTo('#nodelist tbody'); 198 tr.hover( function() { 199 if (!selectedNode || this != selectedNode) 200 $(this).css('background', '#cecece'); 201 }, function() { 202 if (!selectedNode || this != selectedNode) 203 $(this).css('background', 'transparent'); 204 }); 205 tr.click( function() { 206 selectRow(this); 207 }); 208 209 $('<td class="nid">' + node.path + '</td>').appendTo(tr); 210 $('<td>' + node.title + '</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 |