mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-04 04:32:43 +01:00
a161617d8e
Summary: does the title and also a few other small tweaks - kills the init js behavior; now its part of menu where it belongs. - adds the underline to the icon when its toggled in the widget menu - fixed JS initialization errors on the "create conpherence" page. Note I still like keeping all that init stuff in one function because its typing the same data a bunch to be passed over to the JS layer. Other ways to accomplish this obvi... Only fun wrinkle here is I think Chad intended me to display "when the file was attached". Instead, I display when the file was *uploaded*. I think this jives better with our version where you can't delete and all that. Files are pretty powerful, long-living objects in Phabricator land. Test Plan: added files to a conpherence and noted widget loaded updated okay. added a file with no author (generated by the system) and verified it still rendered okay. switched between conpherences and verified proper data in each files widget. uploaded image and text files to check the icons were correct. Reviewers: epriestley, chad Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T2530 Differential Revision: https://secure.phabricator.com/D5337
159 lines
4.2 KiB
JavaScript
159 lines
4.2 KiB
JavaScript
/**
|
|
* @provides javelin-behavior-conpherence-menu
|
|
* @requires javelin-behavior
|
|
* javelin-dom
|
|
* javelin-request
|
|
* javelin-stratcom
|
|
* javelin-uri
|
|
* javelin-util
|
|
* javelin-workflow
|
|
*/
|
|
|
|
JX.behavior('conpherence-menu', function(config) {
|
|
|
|
function onwidgetresponse(context, response) {
|
|
var widgets = JX.$H(response.widgets);
|
|
var widgetsRoot = JX.$(config.widgets_pane);
|
|
JX.DOM.setContent(widgetsRoot, widgets);
|
|
}
|
|
|
|
function onresponse(context, response) {
|
|
var header = JX.$H(response.header);
|
|
var messages = JX.$H(response.messages);
|
|
var form = JX.$H(response.form);
|
|
var headerRoot = JX.$(config.header);
|
|
var messagesRoot = JX.$(config.messages);
|
|
var formRoot = JX.$(config.form_pane);
|
|
var widgetsRoot = JX.$(config.widgets_pane);
|
|
var menuRoot = JX.$(config.menu_pane);
|
|
JX.DOM.setContent(headerRoot, header);
|
|
JX.DOM.setContent(messagesRoot, messages);
|
|
messagesRoot.scrollTop = messagesRoot.scrollHeight;
|
|
JX.DOM.setContent(formRoot, form);
|
|
|
|
var conpherences = JX.DOM.scry(
|
|
menuRoot,
|
|
'a',
|
|
'conpherence-menu-click'
|
|
);
|
|
|
|
for (var i = 0; i < conpherences.length; i++) {
|
|
var current = conpherences[i];
|
|
if (current.id == context.id) {
|
|
JX.DOM.alterClass(current, 'conpherence-selected', true);
|
|
JX.DOM.alterClass(current, 'hide-unread-count', true);
|
|
} else {
|
|
JX.DOM.alterClass(current, 'conpherence-selected', false);
|
|
}
|
|
}
|
|
|
|
// TODO - update the browser URI T2086
|
|
|
|
JX.Stratcom.invoke(
|
|
'conpherence-selected-loaded',
|
|
null,
|
|
{}
|
|
);
|
|
}
|
|
|
|
JX.Stratcom.listen(
|
|
'click',
|
|
'conpherence-menu-click',
|
|
function(e) {
|
|
e.kill();
|
|
var selected = e.getNode(['conpherence-menu-click']);
|
|
if (config.fancy_ajax) {
|
|
JX.Stratcom.invoke(
|
|
'conpherence-selected',
|
|
null,
|
|
{ selected : selected }
|
|
);
|
|
} else {
|
|
var data = JX.Stratcom.getData(selected);
|
|
var uri = new JX.URI(config.base_uri + data.id + '/');
|
|
uri.go();
|
|
}
|
|
}
|
|
);
|
|
|
|
JX.Stratcom.listen(
|
|
'conpherence-initial-selected',
|
|
null,
|
|
function(e) {
|
|
var selected = e.getData().selected;
|
|
e.kill();
|
|
JX.Stratcom.invoke(
|
|
'conpherence-selected',
|
|
null,
|
|
{ selected : selected }
|
|
);
|
|
}
|
|
);
|
|
|
|
JX.Stratcom.listen(
|
|
'conpherence-selected',
|
|
null,
|
|
function(e) {
|
|
|
|
var selected = e.getData().selected;
|
|
var data = JX.Stratcom.getData(selected);
|
|
var uri = config.base_uri + 'view/' + data.id + '/';
|
|
var widget_uri = config.base_uri + 'widget/' + data.id + '/';
|
|
new JX.Workflow(uri, {})
|
|
.setHandler(JX.bind(null, onresponse, selected))
|
|
.start();
|
|
new JX.Workflow(widget_uri, {})
|
|
.setHandler(JX.bind(null, onwidgetresponse, selected))
|
|
.start();
|
|
}
|
|
);
|
|
|
|
JX.Stratcom.listen('click', 'conpherence-edit-metadata', function (e) {
|
|
e.kill();
|
|
var root = JX.$(config.form_pane);
|
|
var form = JX.DOM.find(root, 'form');
|
|
var data = e.getNodeData('conpherence-edit-metadata');
|
|
new JX.Workflow.newFromForm(form, data)
|
|
.setHandler(function (r) {
|
|
// update the header
|
|
JX.DOM.setContent(
|
|
JX.$(config.header),
|
|
JX.$H(r.header)
|
|
);
|
|
|
|
// update the menu entry as well
|
|
JX.DOM.replace(
|
|
JX.$(r.conpherence_phid + '-nav-item'),
|
|
JX.$H(r.nav_item)
|
|
);
|
|
JX.DOM.replace(
|
|
JX.$(r.conpherence_phid + '-menu-item'),
|
|
JX.$H(r.menu_item)
|
|
);
|
|
})
|
|
.start();
|
|
});
|
|
|
|
JX.Stratcom.listen('click', 'show-older-messages', function(e) {
|
|
e.kill();
|
|
console.log(document.URL);
|
|
new JX.Request('/conpherence/view/1/', function(r) {
|
|
console.log('100');
|
|
})
|
|
.setData({offset: 100}) // get the next page
|
|
.send();
|
|
});
|
|
|
|
// select the current message
|
|
var selectedConpherence = false;
|
|
if (config.selected_conpherence_id) {
|
|
var selected = JX.$(config.selected_conpherence_id + '-nav-item');
|
|
JX.Stratcom.invoke(
|
|
'conpherence-initial-selected',
|
|
null,
|
|
{ selected : selected }
|
|
);
|
|
selectedConpherence = true;
|
|
}
|
|
|
|
});
|