| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
1 // $Id: functions.js,v 1.1.4.2 2008/12/05 10:59:28 wwalc Exp $ 2 3 function preinit() { 4 // Initialize 5 tinyMCE.setWindowArg('mce_windowresize', false); 6 } 7 8 function init() { 9 window.focus(); 10 loadCategories(null); 11 } 12 13 /** 14 * loadCategories() 15 * @param obj parent Object 16 **/ 17 function loadCategories(obj) { 18 var params = ''; 19 var vid = '-1'; 20 var top = 75; 21 var objTop; 22 if (obj != null) { 23 var fSel = $('#browse_sel_0_sel'); 24 if (fSel !== null) { 25 vid = $(fSel).get(0).value; 26 } 27 if ($(obj).attr('id') != 'browse_sel_0_sel') { 28 params = '<c-term-id=' + $(obj).get(0).value; 29 } 30 31 try 32 { 33 objTop = $(obj).attr('id').match(/_(\d+)_sel/); 34 top += (objTop[1] * 17); 35 } 36 catch (e) { 37 top += 0; 38 } 39 } 40 params = 'ltc-type=linktocontent_node<c-vocab-id=' + vid + params; 41 42 $('#statusImg').css({top: top + 'px'}).show(); 43 44 $.ajax({ 45 type: "POST", 46 url: _getBaseHref() + 'index.php?q=linktocontent', 47 data: params, 48 error: function(xml, msg, exc) { 49 $('#statusImg').hide(); 50 alert('Error: ' + msg + '\n' + xml.responseText); 51 }, 52 success: function(data){ 53 try { 54 var results = eval('(' + data + ');'); 55 _clearNodeList(); 56 if ((obj == null) || ($(obj).get(0).value > -1)) { 57 if (_fillDropdown(obj, results)) { 58 window.resizeBy(0, 17); 59 } 60 } 61 _fillNodelist(results); 62 } 63 catch (e) { 64 alert('Error on retrieving data from module.\n' + e.name + '\n' + e.message); 65 } 66 finally { 67 $('#statusImg').hide(); 68 } 69 }}); 70 } 71 72 function insertAction() { 73 if (selectedNode == null) { 74 return; 75 } 76 var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); 77 var elm = inst.getFocusElement(); 78 79 elm = tinyMCE.getParentElement(elm, "a"); 80 81 tinyMCEPopup.execCommand("mceBeginUndoLevel"); 82 83 // Create new anchor elements 84 if (elm == null) { 85 var nid = selectedNode.cells[0].firstChild.nodeValue; 86 var insertText = selectedNode.cells[1].firstChild.nodeValue; 87 if (inst.selection.getSelectedText().length == 0) { 88 tinyMCEPopup.execCommand("mceInsertContent", false, 89 '<a href="' + nid + '">' + insertText + '</a>'); 90 } 91 else { 92 tinyMCEPopup.execCommand("mceInsertContent", false, 93 '<a href="' + nid + '">' + inst.selection.getSelectedHTML() + '</a>'); 94 } // end (getSelectedText == 0) 95 } 96 else { 97 elm.setAttribute("mce_href", selectedNode.cells[0].firstChild.nodeValue); 98 // Refresh in old MSIE 99 if (tinyMCE.isMSIE5) 100 elm.outerHTML = elm.outerHTML; 101 } 102 103 tinyMCE._setEventsEnabled(inst.getBody(), false); 104 tinyMCEPopup.execCommand("mceEndUndoLevel"); 105 tinyMCEPopup.close(); 106 } 107 108 function loadScript(url) { 109 $('head', document).append('<script type="text/javascript" src="' + url + '"></script>'); 110 } 111 112 /** 113 * returns the base drupal path 114 * @access public 115 **/ 116 function _getBaseHref() { 117 var url = baseUrl.substring(0, baseUrl.indexOf('modules/')); 118 if (url.indexOf('sites/') > -1) 119 url = url.substring(0, url.indexOf('sites/')); 120 return url; 121 } 122 123 // dropdown functions 124 /** 125 * 126 * @access public 127 * @return void 128 **/ 129 function _createDropdown(obj){ 130 var dropdown; 131 var elemname = ''; 132 if (obj == null) { 133 elemname = 'browse_sel_-1'; 134 } 135 else { 136 elemname = $(obj).parent().attr('id'); 137 _removeDescendant($(obj)); 138 } 139 140 var level = parseInt(elemname.substring(elemname.lastIndexOf("_") + 1, elemname.length)) + 1; 141 142 var elemBase = elemname.substring(0, elemname.lastIndexOf("_") + 1); 143 144 // create surrounding <div> 145 var sel_div = $('<div></div>'); 146 $(sel_div).attr('name', elemBase + level); 147 $(sel_div).attr('id', elemBase + level); 148 $(sel_div).attr('style', 'display: block; margin: 1px 0; padding: 0; border: 0;'); 149 150 // create <select> 151 var select = $('<select></select>'); 152 $(select).attr('size', 1); 153 $(select).attr('name', elemBase + level + '_sel'); 154 $(select).attr('id', elemBase + level + '_sel'); 155 156 // add event handler 157 $(select).change(function() { 158 _removeDescendant($(this).parent()); 159 _clearNodeList(); 160 loadCategories($(this)); 161 }); 162 163 // create image (only if level > 0) 164 if (level > 0) { 165 var img = $('<img />'); 166 $(img).attr('id', elemname.substring(0, elemname.lastIndexOf('_') + 1) + level + '_img'); 167 $(img).attr('alt', ''); 168 $(img).attr('src', 'images/descendant.gif'); 169 // extra margin for IE 170 $(img).css({margin: '0px 2px', border: 0}); 171 $(img).css({marginLeft: String((parseInt(level) - 1) * 14) + 'px', marginRight: '2px'}); 172 $(sel_div).append($(img)); 173 } 174 175 $(sel_div).append($(select)); 176 $(sel_div).hide(); 177 $('#form_browse').append($(sel_div)); 178 $(sel_div).show('slow'); 179 return select; 180 } 181 182 /** 183 * _fillDropdown 184 * @return true if a dropdown was inserted 185 **/ 186 function _fillDropdown(obj, results){ 187 if (results.categories != false) { 188 var select = _createDropdown(obj); 189 //<!-- linktonode START --> 190 $(select).addOption(-1, FCKLang.DlgDrupalChooseCategory); 191 //<!-- linktonode END --> 192 for (key in results.categories) 193 $(select).addOption(results.categories[key].tid, results.categories[key].title); 194 return true; 195 } 196 return false; 197 } 198 199 /** 200 * remove "child" elements 201 **/ 202 function _removeDescendant(elem) { 203 if (elem == null) 204 return; 205 $(elem).next().each( 206 function() { 207 _removeDescendant($(this)); 208 window.resizeBy(0, -17); 209 $(this).hide('slow').remove(); 210 } 211 ); 212 } 213 214 // nodelist functions 215 var selectedNode = null; 216 217 function _fillNodelist(results) { 218 if ((results == null) || (results.nodes == null) || (results.nodes == false)) 219 return; 220 221 for (key in results.nodes) { 222 _addNodeToList(results.nodes[key]); 223 } 224 } 225 226 function _clearNodeList() { 227 $('#nodelist tbody tr').each( 228 function() { 229 $(this).remove(); 230 } 231 ); 232 } 233 234 function selectRow(row) { 235 if (!row) { 236 return; 237 } 238 $('#nodelist tbody tr').each(function() { 239 $(this).css({background: '#ffffff'}); 240 selectedNode = null; 241 }); 242 selectedNode = row; 243 $(row).css({background: '#dadfe9'}); 244 } 245 246 function _addNodeToList(node){ 247 var tr = $('<tr></tr>').appendTo('#nodelist tbody'); 248 tr.hover( 249 function() { 250 if (selectedNode != this) { 251 $(this).css({background: '#cecece'}); 252 } 253 }, 254 function() { 255 if (selectedNode != this) { 256 $(this).css({background: '#ffffff'}); 257 } 258 } 259 ); 260 tr.click(function() { 261 selectRow(this); 262 }); 263 264 $('<td class="nid">' + node.href + '</td>').appendTo(tr); 265 $('<td>' + node.title + '</td>').appendTo(tr); 266 $('<td>' + node.date + '</td>').appendTo(tr); 267 $('<td>' + node.author + '</td>').appendTo(tr); 268 $('<td class="nid">' + node.orig_href + '</td>').appendTo(tr); 269 } 270 271 /** 272 * make the nodelist accessible by keyboard 273 **/ 274 $('.accessible').keypress(function(e) { 275 switch (e.keyCode) { 276 case 39: 277 case 40: // move selection down 278 if (selectedNode == null) 279 selectedNode = $('#nodelist tbody tr').get(0); 280 else 281 selectedNode = $(selectedNode).next('tr').get(0); 282 selectRow(selectedNode); 283 break; 284 case 37: 285 case 38: // move selection up 286 if (selectedNode == null) 287 selectedNode = $('#nodelist tbody tr').get($('#nodelist tbody tr').length - 1); 288 else 289 selectedNode = $(selectedNode).prev('tr').get(0); 290 selectRow(selectedNode); 291 break; 292 } 293 }); 294 295 // options 296 $.fn.addOption = function() 297 { 298 if(arguments.length == 0) 299 return this; 300 // select option when added? default is false 301 var selectOption = false; 302 // multiple items 303 var multiple = false; 304 if(typeof arguments[0] == "object") 305 { 306 multiple = true; 307 var items = arguments[0]; 308 } 309 if(arguments.length >= 2) 310 { 311 if(typeof arguments[1] == "boolean") 312 selectOption = arguments[1]; 313 else if(typeof arguments[2] == "boolean") 314 selectOption = arguments[2]; 315 if(!multiple) 316 { 317 var value = arguments[0]; 318 var text = arguments[1]; 319 } 320 } 321 this.each( 322 function() 323 { 324 if(this.nodeName.toLowerCase() != "select") 325 return; 326 if(multiple) 327 { 328 for(v in items) 329 { 330 $(this).addOption(v, items[v], selectOption); 331 } 332 } 333 else 334 { 335 var option = document.createElement("option"); 336 option.value = value; 337 option.text = text; 338 this.options.add(option); 339 } 340 if(selectOption) 341 { 342 this.options[this.options.length-1].selected = true; 343 } 344 } 345 ) 346 return this; 347 } 348 349 $.fn.removeOption = function() 350 { 351 if(arguments.length == 0) 352 return this; 353 if(typeof arguments[0] == "string") 354 var value = arguments[0]; 355 else if(typeof arguments[0] == "number") 356 var index = arguments[0]; 357 else 358 return this; 359 this.each( 360 function() 361 { 362 if(this.nodeName.toLowerCase() != "select") 363 return; 364 if(value) 365 { 366 var optionsLength = this.options.length; 367 for(var i=optionsLength-1; i>=0; i--) 368 { 369 if(this.options[i].value == value) 370 { 371 this.options[i] = null; 372 } 373 } 374 } 375 else 376 { 377 this.remove(index); 378 } 379 } 380 ) 381 return this; 382 }
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 |