mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 17:02:41 +01:00
ae0d9770a5
Summary: The <a href> attribute is useful because user knows where the link goes before opening it plus he can copy it to the clipboard plus he can add it to the bookmarks. Test Plan: Display revision. View Options. Click. Reviewers: epriestley Reviewed By: epriestley CC: aran Differential Revision: https://secure.phabricator.com/D1436
84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
/**
|
|
* @provides javelin-behavior-differential-dropdown-menus
|
|
* @requires javelin-behavior
|
|
* javelin-dom
|
|
* javelin-util
|
|
* javelin-stratcom
|
|
* phabricator-dropdown-menu
|
|
* phabricator-menu-item
|
|
*/
|
|
|
|
JX.behavior('differential-dropdown-menus', function(config) {
|
|
|
|
function build_menu(button, data) {
|
|
|
|
function show_more() {
|
|
var container = JX.$(data.containerID);
|
|
var nodes = JX.DOM.scry(container, 'tr', 'context-target');
|
|
for (var ii = 0; ii < nodes.length; ii++) {
|
|
var show = JX.DOM.scry(nodes[ii], 'a', 'show-more');
|
|
for (var jj = 0; jj < show.length; jj++) {
|
|
if (JX.Stratcom.getData(show[jj]).type != 'all') {
|
|
continue;
|
|
}
|
|
var event_data = {
|
|
context : nodes[ii],
|
|
show : show[jj]
|
|
};
|
|
JX.Stratcom.invoke('differential-reveal-context', null, event_data);
|
|
}
|
|
}
|
|
}
|
|
|
|
function link_to(name, uri) {
|
|
var item = new JX.PhabricatorMenuItem(
|
|
name,
|
|
JX.bind(null, window.open, uri),
|
|
uri);
|
|
item.setDisabled(!uri);
|
|
return item;
|
|
}
|
|
|
|
var reveal_item = new JX.PhabricatorMenuItem('', show_more);
|
|
|
|
var diffusion_item = link_to('Browse in Diffusion', data.diffusionURI);
|
|
if (!data.diffusionURI) {
|
|
diffusion_item.setDisabled(true);
|
|
}
|
|
|
|
var menu = new JX.PhabricatorDropdownMenu(buttons[ii])
|
|
.addItem(reveal_item)
|
|
.addItem(diffusion_item)
|
|
.addItem(link_to('View Standalone', data.detailURI));
|
|
if (data.leftURI) {
|
|
menu.addItem(link_to('Show Raw File (Left)', data.leftURI));
|
|
}
|
|
if (data.rightURI) {
|
|
menu.addItem(link_to('Show Raw File (Right)', data.rightURI));
|
|
}
|
|
|
|
menu.listen(
|
|
'open',
|
|
function() {
|
|
|
|
// When the user opens the menu, check if there are any "Show More"
|
|
// links in the changeset body. If there aren't, disable the "Show
|
|
// Entire File" menu item since it won't change anything.
|
|
|
|
var nodes = JX.DOM.scry(JX.$(data.containerID), 'a', 'show-more');
|
|
if (nodes.length) {
|
|
reveal_item.setDisabled(false);
|
|
reveal_item.setName('Show Entire File');
|
|
} else {
|
|
reveal_item.setDisabled(true);
|
|
reveal_item.setName('Entire File Shown');
|
|
}
|
|
});
|
|
}
|
|
|
|
var buttons = JX.DOM.scry(window.document, 'a', 'differential-view-options');
|
|
for (var ii = 0; ii < buttons.length; ii++) {
|
|
build_menu(buttons[ii], JX.Stratcom.getData(buttons[ii]));
|
|
}
|
|
|
|
});
|