[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 /** 2 * @provides javelin-behavior-conpherence-pontificate 3 * @requires javelin-behavior 4 * javelin-dom 5 * javelin-util 6 * javelin-workflow 7 * javelin-stratcom 8 */ 9 10 JX.behavior('conpherence-pontificate', function() { 11 12 JX.Stratcom.listen('aphlict-receive-message', null, function(e) { 13 var message = e.getData(); 14 15 if (message.type != 'message') { 16 // Not a message event. 17 return; 18 } 19 20 // TODO: This is really, really gross. 21 var infonode = JX.DOM.find(document, 'input', 'latest-transaction-id'); 22 var data = JX.Stratcom.getData(infonode); 23 24 var latest_id = infonode.value; 25 var thread_phid = data.threadPHID; 26 var thread_id = data.threadID; 27 28 if (message.threadPHID != thread_phid) { 29 // Message event for some thread other than the visible one. 30 return; 31 } 32 33 if (message.messageID <= latest_id) { 34 // Message event for something we already know about. 35 return; 36 } 37 38 var params = { 39 action: 'load', 40 latest_transaction_id: latest_id 41 }; 42 43 new JX.Workflow('/conpherence/update/' + thread_id + '/') 44 .setData(params) 45 .setHandler(function(r) { 46 var messages = JX.DOM.find(document, 'div', 'conpherence-messages'); 47 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 48 messages.scrollTop = messages.scrollHeight; 49 50 // TODO: Continued grossness from above. 51 infonode.value = r.latest_transaction_id; 52 }) 53 .start(); 54 }); 55 56 57 var onsubmit = function(e) { 58 e.kill(); 59 60 var form = e.getNode('tag:form'); 61 62 var root = e.getNode('conpherence-layout'); 63 var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); 64 var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); 65 var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); 66 var fileWidget = null; 67 try { 68 fileWidget = JX.DOM.find(root, 'div', 'widgets-files'); 69 } catch (ex) { 70 // Ignore; maybe no files widget 71 } 72 JX.DOM.alterClass(form_root, 'loading', true); 73 74 JX.Workflow.newFromForm(form) 75 .setHandler(JX.bind(this, function(r) { 76 JX.DOM.appendContent(messages, JX.$H(r.transactions)); 77 messages.scrollTop = messages.scrollHeight; 78 79 if (fileWidget) { 80 JX.DOM.setContent( 81 fileWidget, 82 JX.$H(r.file_widget) 83 ); 84 } 85 86 var latest_transaction_dom = JX.DOM.find( 87 root, 88 'input', 89 'latest-transaction-id'); 90 latest_transaction_dom.value = r.latest_transaction_id; 91 92 var textarea = JX.DOM.find(form, 'textarea'); 93 textarea.value = ''; 94 95 JX.Stratcom.invoke( 96 'conpherence-selectthread', 97 null, 98 { id : r.conpherence_phid + '-nav-item' } 99 ); 100 101 JX.DOM.alterClass(form_root, 'loading', false); 102 })) 103 .start(); 104 }; 105 106 JX.Stratcom.listen( 107 ['submit', 'didSyntheticSubmit'], 108 'conpherence-pontificate', 109 onsubmit); 110 111 });
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 |