[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 /** 2 * @provides javelin-behavior-repository-crossreference 3 * @requires javelin-behavior 4 * javelin-dom 5 * javelin-stratcom 6 * javelin-uri 7 */ 8 9 JX.behavior('repository-crossreference', function(config) { 10 11 // NOTE: Pretty much everything in this file is a worst practice. We're 12 // constrained by the markup generated by the syntax highlighters. 13 14 function link(element, lang) { 15 JX.DOM.alterClass(element, 'repository-crossreference', true); 16 JX.DOM.listen( 17 element, 18 'click', 19 'tag:span', 20 function(e) { 21 var target = e.getTarget(); 22 var map = {nc : 'class', nf : 'function', na : null}; 23 while (target !== document.body) { 24 if (JX.DOM.isNode(target, 'span') && (target.className in map)) { 25 var timeout = function() { 26 if (window.getSelection && !window.getSelection().isCollapsed) { 27 return; 28 } 29 var symbol = target.textContent || target.innerText; 30 var query = { 31 lang : lang, 32 projects : config.projects.join(','), 33 jump : true 34 }; 35 if (map[target.className]) { 36 query.type = map[target.className]; 37 } 38 if (target.hasAttribute('data-symbol-context')) { 39 query.context = target.getAttribute('data-symbol-context'); 40 } 41 if (target.hasAttribute('data-symbol-name')) { 42 symbol = target.getAttribute('data-symbol-name'); 43 } 44 var uri = JX.$U('/diffusion/symbol/' + symbol + '/'); 45 uri.addQueryParams(query); 46 window.open(uri); 47 }; 48 setTimeout(timeout, 250); 49 e.kill(); 50 break; 51 } 52 target = target.parentNode; 53 } 54 }); 55 } 56 57 function linkAll() { 58 var blocks = JX.DOM.scry(document.body, 'div', 'remarkup-code-block'); 59 for (var i = 0; i < blocks.length; ++i) { 60 if (blocks[i].hasAttribute('data-code-lang')) { 61 var lang = blocks[i].getAttribute('data-code-lang'); 62 link(blocks[i], lang); 63 } 64 } 65 } 66 67 if (config.container) { 68 link(JX.$(config.container), config.lang); 69 } else if (config.section) { 70 linkAll(JX.$(config.section)); 71 } 72 73 JX.Stratcom.listen( 74 'differential-preview-update', 75 null, 76 function(e) { 77 linkAll(e.getData().container); 78 }); 79 80 });
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |