Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/conpherence/behavior-menu.js
Show First 20 Lines • Show All 113 Lines • ▼ Show 20 Lines | if (_currentRole == 'thread') { | ||||
markThreadLoading(true); | markThreadLoading(true); | ||||
} | } | ||||
markWidgetLoading(true); | markWidgetLoading(true); | ||||
onDeviceChange(); | onDeviceChange(); | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); | var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); | ||||
var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); | var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); | ||||
scrollbar = new JX.Scrollbar(messages); | scrollbar = new JX.Scrollbar(messages); | ||||
scrollbar.setAsScrollFrame(); | |||||
} | } | ||||
init(); | init(); | ||||
/** | /** | ||||
* Selecting threads | * Selecting threads | ||||
*/ | */ | ||||
function selectThreadByID(id, update_page_data) { | function selectThreadByID(id, update_page_data) { | ||||
var thread = JX.$(id); | var thread = JX.$(id); | ||||
▲ Show 20 Lines • Show All 182 Lines • ▼ Show 20 Lines | JX.Stratcom.invoke( | ||||
'conpherence-did-redraw-thread', | 'conpherence-did-redraw-thread', | ||||
null, | null, | ||||
{ | { | ||||
widget : getDefaultWidget(), | widget : getDefaultWidget(), | ||||
threadID : _thread.selected, | threadID : _thread.selected, | ||||
buildDeviceWidgetSelector : build_device_widget_selector | buildDeviceWidgetSelector : build_device_widget_selector | ||||
}); | }); | ||||
} | } | ||||
var _firstScroll = true; | var _firstScroll = true; | ||||
function _scrollMessageWindow() { | function _scrollMessageWindow() { | ||||
if (_firstScroll) { | if (_firstScroll) { | ||||
_firstScroll = false; | _firstScroll = false; | ||||
// let the standard #anchor tech take over | |||||
// We want to let the standard #anchor tech take over after we make sure | |||||
// we don't have to present the user with a "load older message?" dialog | |||||
if (window.location.hash) { | if (window.location.hash) { | ||||
var hash = window.location.hash.replace(/^#/, ''); | |||||
try { | |||||
JX.$('anchor-' + hash); | |||||
} catch (ex) { | |||||
var uri = '/conpherence/' + | |||||
_thread.selected + '/' + hash + '/'; | |||||
threadManager.setLoadThreadURI(uri); | |||||
threadManager.loadThreadByID(_thread.selected, true); | |||||
_firstScroll = true; | |||||
return; | |||||
} | |||||
return; | return; | ||||
} | } | ||||
} | } | ||||
scrollbar.scrollTo(scrollbar.getViewportNode().scrollHeight); | scrollbar.scrollTo(scrollbar.getViewportNode().scrollHeight); | ||||
} | } | ||||
function _focusTextarea() { | function _focusTextarea() { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | ||||
Show All 35 Lines | JX.Stratcom.listen( | ||||
}); | }); | ||||
JX.Stratcom.listen('click', 'conpherence-edit-metadata', function (e) { | JX.Stratcom.listen('click', 'conpherence-edit-metadata', function (e) { | ||||
e.kill(); | e.kill(); | ||||
var root = e.getNode('conpherence-layout'); | var root = e.getNode('conpherence-layout'); | ||||
var form = JX.DOM.find(root, 'form', 'conpherence-pontificate'); | var form = JX.DOM.find(root, 'form', 'conpherence-pontificate'); | ||||
var data = e.getNodeData('conpherence-edit-metadata'); | var data = e.getNodeData('conpherence-edit-metadata'); | ||||
var header = JX.DOM.find(root, 'div', 'conpherence-header-pane'); | var header = JX.DOM.find(root, 'div', 'conpherence-header-pane'); | ||||
var messages = JX.DOM.find(root, 'div', 'conpherence-messages'); | var messages = scrollbar.getContentNode(); | ||||
new JX.Workflow.newFromForm(form, data) | new JX.Workflow.newFromForm(form, data) | ||||
.setHandler(JX.bind(this, function(r) { | .setHandler(JX.bind(this, function(r) { | ||||
JX.DOM.appendContent(messages, JX.$H(r.transactions)); | JX.DOM.appendContent(messages, JX.$H(r.transactions)); | ||||
_scrollMessageWindow(); | _scrollMessageWindow(); | ||||
JX.DOM.setContent( | JX.DOM.setContent( | ||||
header, | header, | ||||
Show All 9 Lines | new JX.Workflow.newFromForm(form, data) | ||||
selectThreadByID(r.conpherence_phid + '-nav-item'); | selectThreadByID(r.conpherence_phid + '-nav-item'); | ||||
} catch (ex) { | } catch (ex) { | ||||
// Ignore; this view may not have a menu. | // Ignore; this view may not have a menu. | ||||
} | } | ||||
})) | })) | ||||
.start(); | .start(); | ||||
}); | }); | ||||
var _loadingTransactionID = null; | var _oldLoadingTransactionID = null; | ||||
JX.Stratcom.listen('click', 'show-older-messages', function(e) { | JX.Stratcom.listen('click', 'show-older-messages', function(e) { | ||||
e.kill(); | e.kill(); | ||||
var data = e.getNodeData('show-older-messages'); | var data = e.getNodeData('show-older-messages'); | ||||
if (data.oldest_transaction_id == _loadingTransactionID) { | if (data.oldest_transaction_id == _oldLoadingTransactionID) { | ||||
return; | return; | ||||
} | } | ||||
_loadingTransactionID = data.oldest_transaction_id; | _oldLoadingTransactionID = data.oldest_transaction_id; | ||||
var node = e.getNode('show-older-messages'); | var node = e.getNode('show-older-messages'); | ||||
JX.DOM.setContent(node, 'Loading...'); | JX.DOM.setContent(node, 'Loading...'); | ||||
JX.DOM.alterClass(node, 'conpherence-show-older-messages-loading', true); | JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true); | ||||
var conf_id = _thread.selected; | var conf_id = _thread.selected; | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var messages_root = scrollbar.getContentNode(); | ||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages'); | |||||
new JX.Workflow(config.baseURI + conf_id + '/', data) | new JX.Workflow(config.baseURI + conf_id + '/', data) | ||||
.setHandler(function(r) { | .setHandler(function(r) { | ||||
JX.DOM.remove(node); | JX.DOM.remove(node); | ||||
var messages = JX.$H(r.messages); | var messages = JX.$H(r.messages); | ||||
JX.DOM.prependContent( | JX.DOM.prependContent( | ||||
messages_root, | messages_root, | ||||
JX.$H(messages)); | JX.$H(messages)); | ||||
}).start(); | }).start(); | ||||
}); | }); | ||||
var _newLoadingTransactionID = null; | |||||
JX.Stratcom.listen('click', 'show-newer-messages', function(e) { | |||||
e.kill(); | |||||
var data = e.getNodeData('show-newer-messages'); | |||||
if (data.newest_transaction_id == _newLoadingTransactionID) { | |||||
return; | |||||
} | |||||
_newLoadingTransactionID = data.newest_transaction_id; | |||||
var node = e.getNode('show-newer-messages'); | |||||
JX.DOM.setContent(node, 'Loading...'); | |||||
JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true); | |||||
var conf_id = _thread.selected; | |||||
var messages_root = scrollbar.getContentNode(); | |||||
new JX.Workflow(config.baseURI + conf_id + '/', data) | |||||
.setHandler(function(r) { | |||||
JX.DOM.remove(node); | |||||
var messages = JX.$H(r.messages); | |||||
JX.DOM.appendContent( | |||||
messages_root, | |||||
JX.$H(messages)); | |||||
}).start(); | |||||
}); | |||||
/** | /** | ||||
* On devices, we just show a thread list, so we don't want to automatically | * On devices, we just show a thread list, so we don't want to automatically | ||||
* select or load any threads. On desktop, we automatically select the first | * select or load any threads. On desktop, we automatically select the first | ||||
* thread, changing the _currentRole from list to thread. | * thread, changing the _currentRole from list to thread. | ||||
*/ | */ | ||||
function onDeviceChange() { | function onDeviceChange() { | ||||
var new_device = JX.Device.getDevice(); | var new_device = JX.Device.getDevice(); | ||||
if (new_device === _oldDevice) { | if (new_device === _oldDevice) { | ||||
▲ Show 20 Lines • Show All 100 Lines • Show Last 20 Lines |