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