mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-18 19:40:55 +01:00
Quicksand - fix project board page and quicksand
Summary: Fixes T7913. Collapse the separate board dropdown into the board projects behavior; we always need that anyway and now we can install the listener more granularly. Test Plan: - visted project board - invoked create task, cancelled dialog - visited project feed - visited project board - invoked create task, cancelled dialog (FAILED pre patch...!) Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T7913 Differential Revision: https://secure.phabricator.com/D12599
This commit is contained in:
parent
b1081a1553
commit
00f864b359
8 changed files with 188 additions and 155 deletions
|
@ -9,7 +9,7 @@ return array(
|
||||||
'names' => array(
|
'names' => array(
|
||||||
'core.pkg.css' => '5e324506',
|
'core.pkg.css' => '5e324506',
|
||||||
'core.pkg.js' => '59d01bb7',
|
'core.pkg.js' => '59d01bb7',
|
||||||
'darkconsole.pkg.js' => '6d16ff19',
|
'darkconsole.pkg.js' => 'e7393ebb',
|
||||||
'differential.pkg.css' => '3500921f',
|
'differential.pkg.css' => '3500921f',
|
||||||
'differential.pkg.js' => '890046d3',
|
'differential.pkg.js' => '890046d3',
|
||||||
'diffusion.pkg.css' => '591664fa',
|
'diffusion.pkg.css' => '591664fa',
|
||||||
|
@ -205,7 +205,7 @@ return array(
|
||||||
'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
|
'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
|
||||||
'rsrc/externals/javelin/lib/Leader.js' => '331b1611',
|
'rsrc/externals/javelin/lib/Leader.js' => '331b1611',
|
||||||
'rsrc/externals/javelin/lib/Mask.js' => '8a41885b',
|
'rsrc/externals/javelin/lib/Mask.js' => '8a41885b',
|
||||||
'rsrc/externals/javelin/lib/Quicksand.js' => '517545ab',
|
'rsrc/externals/javelin/lib/Quicksand.js' => '51aeb01d',
|
||||||
'rsrc/externals/javelin/lib/Request.js' => '94b750d2',
|
'rsrc/externals/javelin/lib/Request.js' => '94b750d2',
|
||||||
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
|
'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
|
||||||
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
|
'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
|
||||||
|
@ -413,8 +413,7 @@ return array(
|
||||||
'rsrc/js/application/policy/behavior-policy-control.js' => '1ed33505',
|
'rsrc/js/application/policy/behavior-policy-control.js' => '1ed33505',
|
||||||
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
|
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
|
||||||
'rsrc/js/application/ponder/behavior-votebox.js' => '4e9b766b',
|
'rsrc/js/application/ponder/behavior-votebox.js' => '4e9b766b',
|
||||||
'rsrc/js/application/projects/behavior-boards-dropdown.js' => '0ec56e1d',
|
'rsrc/js/application/projects/behavior-project-boards.js' => '60292820',
|
||||||
'rsrc/js/application/projects/behavior-project-boards.js' => '87cb6b51',
|
|
||||||
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
|
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
|
||||||
'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
|
'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
|
||||||
'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
|
'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
|
||||||
|
@ -460,7 +459,7 @@ return array(
|
||||||
'rsrc/js/core/behavior-autofocus.js' => '7319e029',
|
'rsrc/js/core/behavior-autofocus.js' => '7319e029',
|
||||||
'rsrc/js/core/behavior-choose-control.js' => '6153c708',
|
'rsrc/js/core/behavior-choose-control.js' => '6153c708',
|
||||||
'rsrc/js/core/behavior-crop.js' => 'fa0f4fc2',
|
'rsrc/js/core/behavior-crop.js' => 'fa0f4fc2',
|
||||||
'rsrc/js/core/behavior-dark-console.js' => '87987821',
|
'rsrc/js/core/behavior-dark-console.js' => 'f411b6ae',
|
||||||
'rsrc/js/core/behavior-device.js' => 'a205cf28',
|
'rsrc/js/core/behavior-device.js' => 'a205cf28',
|
||||||
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '6d49590e',
|
'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '6d49590e',
|
||||||
'rsrc/js/core/behavior-error-log.js' => '6882e80a',
|
'rsrc/js/core/behavior-error-log.js' => '6882e80a',
|
||||||
|
@ -560,14 +559,13 @@ return array(
|
||||||
'javelin-behavior-aphront-more' => 'a80d0378',
|
'javelin-behavior-aphront-more' => 'a80d0378',
|
||||||
'javelin-behavior-audio-source' => '59b251eb',
|
'javelin-behavior-audio-source' => '59b251eb',
|
||||||
'javelin-behavior-audit-preview' => 'd835b03a',
|
'javelin-behavior-audit-preview' => 'd835b03a',
|
||||||
'javelin-behavior-boards-dropdown' => '0ec56e1d',
|
|
||||||
'javelin-behavior-choose-control' => '6153c708',
|
'javelin-behavior-choose-control' => '6153c708',
|
||||||
'javelin-behavior-config-reorder-fields' => '14a827de',
|
'javelin-behavior-config-reorder-fields' => '14a827de',
|
||||||
'javelin-behavior-conpherence-menu' => '077a1dab',
|
'javelin-behavior-conpherence-menu' => '077a1dab',
|
||||||
'javelin-behavior-conpherence-pontificate' => '21ba5861',
|
'javelin-behavior-conpherence-pontificate' => '21ba5861',
|
||||||
'javelin-behavior-conpherence-widget-pane' => '93568464',
|
'javelin-behavior-conpherence-widget-pane' => '93568464',
|
||||||
'javelin-behavior-countdown-timer' => 'e4cc26b3',
|
'javelin-behavior-countdown-timer' => 'e4cc26b3',
|
||||||
'javelin-behavior-dark-console' => '87987821',
|
'javelin-behavior-dark-console' => 'f411b6ae',
|
||||||
'javelin-behavior-dashboard-async-panel' => '469c0d9e',
|
'javelin-behavior-dashboard-async-panel' => '469c0d9e',
|
||||||
'javelin-behavior-dashboard-move-panels' => '82439934',
|
'javelin-behavior-dashboard-move-panels' => '82439934',
|
||||||
'javelin-behavior-dashboard-query-panel-select' => '453c5375',
|
'javelin-behavior-dashboard-query-panel-select' => '453c5375',
|
||||||
|
@ -642,7 +640,7 @@ return array(
|
||||||
'javelin-behavior-policy-control' => '1ed33505',
|
'javelin-behavior-policy-control' => '1ed33505',
|
||||||
'javelin-behavior-policy-rule-editor' => '5e9f347c',
|
'javelin-behavior-policy-rule-editor' => '5e9f347c',
|
||||||
'javelin-behavior-ponder-votebox' => '4e9b766b',
|
'javelin-behavior-ponder-votebox' => '4e9b766b',
|
||||||
'javelin-behavior-project-boards' => '87cb6b51',
|
'javelin-behavior-project-boards' => '60292820',
|
||||||
'javelin-behavior-project-create' => '065227cc',
|
'javelin-behavior-project-create' => '065227cc',
|
||||||
'javelin-behavior-quicksand-blacklist' => '7927a7d3',
|
'javelin-behavior-quicksand-blacklist' => '7927a7d3',
|
||||||
'javelin-behavior-refresh-csrf' => '7814b593',
|
'javelin-behavior-refresh-csrf' => '7814b593',
|
||||||
|
@ -677,7 +675,7 @@ return array(
|
||||||
'javelin-leader' => '331b1611',
|
'javelin-leader' => '331b1611',
|
||||||
'javelin-magical-init' => '3010e992',
|
'javelin-magical-init' => '3010e992',
|
||||||
'javelin-mask' => '8a41885b',
|
'javelin-mask' => '8a41885b',
|
||||||
'javelin-quicksand' => '517545ab',
|
'javelin-quicksand' => '51aeb01d',
|
||||||
'javelin-reactor' => '2b8de964',
|
'javelin-reactor' => '2b8de964',
|
||||||
'javelin-reactor-dom' => 'c90a04fc',
|
'javelin-reactor-dom' => 'c90a04fc',
|
||||||
'javelin-reactor-node-calmer' => '76f4ebed',
|
'javelin-reactor-node-calmer' => '76f4ebed',
|
||||||
|
@ -921,12 +919,6 @@ return array(
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
'phabricator-notification-css',
|
'phabricator-notification-css',
|
||||||
),
|
),
|
||||||
'0ec56e1d' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'phuix-dropdown-menu',
|
|
||||||
),
|
|
||||||
'0f764c35' => array(
|
'0f764c35' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
@ -1193,14 +1185,14 @@ return array(
|
||||||
'javelin-typeahead-source',
|
'javelin-typeahead-source',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
),
|
),
|
||||||
'517545ab' => array(
|
|
||||||
'javelin-install',
|
|
||||||
),
|
|
||||||
'519705ea' => array(
|
'519705ea' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-reactor-dom',
|
'javelin-reactor-dom',
|
||||||
),
|
),
|
||||||
|
'51aeb01d' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'54b612ba' => array(
|
'54b612ba' => array(
|
||||||
'javelin-color',
|
'javelin-color',
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
|
@ -1274,6 +1266,15 @@ return array(
|
||||||
'javelin-workflow',
|
'javelin-workflow',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
),
|
),
|
||||||
|
60292820 => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-vector',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-workflow',
|
||||||
|
'phabricator-draggable-list',
|
||||||
|
),
|
||||||
60479091 => array(
|
60479091 => array(
|
||||||
'phabricator-busy',
|
'phabricator-busy',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
|
@ -1472,23 +1473,6 @@ return array(
|
||||||
'aphront-typeahead-control-css',
|
'aphront-typeahead-control-css',
|
||||||
'phui-tag-view-css',
|
'phui-tag-view-css',
|
||||||
),
|
),
|
||||||
87987821 => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-request',
|
|
||||||
'phabricator-keyboard-shortcut',
|
|
||||||
),
|
|
||||||
'87cb6b51' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-vector',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'phabricator-draggable-list',
|
|
||||||
),
|
|
||||||
'88236f00' => array(
|
'88236f00' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'phabricator-keyboard-shortcut',
|
'phabricator-keyboard-shortcut',
|
||||||
|
@ -1970,6 +1954,14 @@ return array(
|
||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
'phabricator-hovercard',
|
'phabricator-hovercard',
|
||||||
),
|
),
|
||||||
|
'f411b6ae' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-request',
|
||||||
|
'phabricator-keyboard-shortcut',
|
||||||
|
),
|
||||||
'f5d1233b' => array(
|
'f5d1233b' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
abstract class PhabricatorController extends AphrontController {
|
abstract class PhabricatorController extends AphrontController {
|
||||||
|
|
||||||
private $handles;
|
private $handles;
|
||||||
|
private $extraQuicksandConfig = array();
|
||||||
|
|
||||||
public function shouldRequireLogin() {
|
public function shouldRequireLogin() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -61,6 +62,15 @@ abstract class PhabricatorController extends AphrontController {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addExtraQuicksandConfig($config) {
|
||||||
|
$this->extraQuicksandConfig += $config;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getExtraQuicksandConfig() {
|
||||||
|
return $this->extraQuicksandConfig;
|
||||||
|
}
|
||||||
|
|
||||||
public function willBeginExecution() {
|
public function willBeginExecution() {
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
@ -294,7 +304,8 @@ abstract class PhabricatorController extends AphrontController {
|
||||||
private function buildPageResponse($page) {
|
private function buildPageResponse($page) {
|
||||||
if ($this->getRequest()->isQuicksand()) {
|
if ($this->getRequest()->isQuicksand()) {
|
||||||
$response = id(new AphrontAjaxResponse())
|
$response = id(new AphrontAjaxResponse())
|
||||||
->setContent($page->renderForQuicksand());
|
->setContent($page->renderForQuicksand(
|
||||||
|
$this->getExtraQuicksandConfig()));
|
||||||
} else {
|
} else {
|
||||||
$response = id(new AphrontWebpageResponse())
|
$response = id(new AphrontWebpageResponse())
|
||||||
->setContent($page->render());
|
->setContent($page->render());
|
||||||
|
|
|
@ -265,15 +265,17 @@ final class PhabricatorProjectBoardViewController
|
||||||
->setUser($viewer)
|
->setUser($viewer)
|
||||||
->setID($board_id);
|
->setID($board_id);
|
||||||
|
|
||||||
$this->initBehavior(
|
$behavior_config = array(
|
||||||
'project-boards',
|
|
||||||
array(
|
|
||||||
'boardID' => $board_id,
|
'boardID' => $board_id,
|
||||||
'projectPHID' => $project->getPHID(),
|
'projectPHID' => $project->getPHID(),
|
||||||
'moveURI' => $this->getApplicationURI('move/'.$project->getID().'/'),
|
'moveURI' => $this->getApplicationURI('move/'.$project->getID().'/'),
|
||||||
'createURI' => '/maniphest/task/create/',
|
'createURI' => '/maniphest/task/create/',
|
||||||
'order' => $this->sortKey,
|
'order' => $this->sortKey,
|
||||||
));
|
);
|
||||||
|
$this->initBehavior(
|
||||||
|
'project-boards',
|
||||||
|
$behavior_config);
|
||||||
|
$this->addExtraQuickSandConfig(array('boardConfig' => $behavior_config));
|
||||||
|
|
||||||
$this->handles = ManiphestTaskListView::loadTaskHandles($viewer, $tasks);
|
$this->handles = ManiphestTaskListView::loadTaskHandles($viewer, $tasks);
|
||||||
|
|
||||||
|
@ -340,10 +342,6 @@ final class PhabricatorProjectBoardViewController
|
||||||
$board->addPanel($panel);
|
$board->addPanel($panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
Javelin::initBehavior(
|
|
||||||
'boards-dropdown',
|
|
||||||
array());
|
|
||||||
|
|
||||||
$sort_menu = $this->buildSortMenu(
|
$sort_menu = $this->buildSortMenu(
|
||||||
$viewer,
|
$viewer,
|
||||||
$sort_key);
|
$sort_key);
|
||||||
|
|
|
@ -601,14 +601,15 @@ final class PhabricatorStandardPageView extends PhabricatorBarePageView {
|
||||||
$foot);
|
$foot);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderForQuicksand() {
|
public function renderForQuicksand(array $extra_config) {
|
||||||
parent::willRenderPage();
|
parent::willRenderPage();
|
||||||
$response = $this->renderPageBodyContent();
|
$response = $this->renderPageBodyContent();
|
||||||
$response = $this->willSendResponse($response);
|
$response = $this->willSendResponse($response);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'content' => hsprintf('%s', $response),
|
'content' => hsprintf('%s', $response),
|
||||||
) + $this->buildQuicksandConfig();
|
) + $this->buildQuicksandConfig()
|
||||||
|
+ $extra_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function buildQuicksandConfig() {
|
private function buildQuicksandConfig() {
|
||||||
|
|
|
@ -68,6 +68,10 @@ JX.install('Quicksand', {
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
getCurrentPageID: function() {
|
||||||
|
return JX.Quicksand._id;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Respond to the user clicking a link.
|
* Respond to the user clicking a link.
|
||||||
*
|
*
|
||||||
|
@ -234,7 +238,9 @@ JX.install('Quicksand', {
|
||||||
null,
|
null,
|
||||||
{
|
{
|
||||||
newResponse: self._responses[self._current],
|
newResponse: self._responses[self._current],
|
||||||
|
newResponseID: self._current,
|
||||||
oldResponse: self._responses[self._onpage],
|
oldResponse: self._responses[self._onpage],
|
||||||
|
oldResponseID: self._onpage,
|
||||||
fromServer: from_server
|
fromServer: from_server
|
||||||
});
|
});
|
||||||
self._onpage = self._current;
|
self._onpage = self._current;
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
/**
|
|
||||||
* @provides javelin-behavior-boards-dropdown
|
|
||||||
* @requires javelin-behavior
|
|
||||||
* javelin-dom
|
|
||||||
* javelin-stratcom
|
|
||||||
* phuix-dropdown-menu
|
|
||||||
*/
|
|
||||||
|
|
||||||
JX.behavior('boards-dropdown', function() {
|
|
||||||
|
|
||||||
JX.Stratcom.listen('click', 'boards-dropdown-menu', function(e) {
|
|
||||||
var data = e.getNodeData('boards-dropdown-menu');
|
|
||||||
if (data.menu) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
e.kill();
|
|
||||||
|
|
||||||
var list = JX.$H(data.items).getFragment().firstChild;
|
|
||||||
|
|
||||||
var button = e.getNode('boards-dropdown-menu');
|
|
||||||
data.menu = new JX.PHUIXDropdownMenu(button);
|
|
||||||
data.menu.setContent(list);
|
|
||||||
data.menu.open();
|
|
||||||
|
|
||||||
JX.DOM.listen(list, 'click', 'tag:a', function(e) {
|
|
||||||
if (!e.isNormalClick()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
data.menu.close();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
|
@ -9,7 +9,7 @@
|
||||||
* phabricator-draggable-list
|
* phabricator-draggable-list
|
||||||
*/
|
*/
|
||||||
|
|
||||||
JX.behavior('project-boards', function(config) {
|
JX.behavior('project-boards', function(config, statics) {
|
||||||
|
|
||||||
function finditems(col) {
|
function finditems(col) {
|
||||||
return JX.DOM.scry(col, 'li', 'project-card');
|
return JX.DOM.scry(col, 'li', 'project-card');
|
||||||
|
@ -69,7 +69,7 @@ JX.behavior('project-boards', function(config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getcolumns() {
|
function getcolumns() {
|
||||||
return JX.DOM.scry(JX.$(config.boardID), 'ul', 'project-column');
|
return JX.DOM.scry(JX.$(statics.boardID), 'ul', 'project-column');
|
||||||
}
|
}
|
||||||
|
|
||||||
function colsort(u, v) {
|
function colsort(u, v) {
|
||||||
|
@ -91,7 +91,7 @@ JX.behavior('project-boards', function(config) {
|
||||||
|
|
||||||
function getcontainer() {
|
function getcontainer() {
|
||||||
return JX.DOM.find(
|
return JX.DOM.find(
|
||||||
JX.$(config.boardID),
|
JX.$(statics.boardID),
|
||||||
'div',
|
'div',
|
||||||
'aphront-multi-column-view');
|
'aphront-multi-column-view');
|
||||||
}
|
}
|
||||||
|
@ -164,9 +164,9 @@ JX.behavior('project-boards', function(config) {
|
||||||
data.beforePHID = before_phid;
|
data.beforePHID = before_phid;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.order = config.order;
|
data.order = statics.order;
|
||||||
|
|
||||||
var workflow = new JX.Workflow(config.moveURI, data)
|
var workflow = new JX.Workflow(statics.moveURI, data)
|
||||||
.setHandler(function(response) {
|
.setHandler(function(response) {
|
||||||
onresponse(response, item, list);
|
onresponse(response, item, list);
|
||||||
});
|
});
|
||||||
|
@ -174,32 +174,7 @@ JX.behavior('project-boards', function(config) {
|
||||||
workflow.start();
|
workflow.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
var lists = [];
|
function onedit(column, r) {
|
||||||
var ii;
|
|
||||||
var cols = getcolumns();
|
|
||||||
|
|
||||||
for (ii = 0; ii < cols.length; ii++) {
|
|
||||||
var list = new JX.DraggableList('project-card', cols[ii])
|
|
||||||
.setFindItemsHandler(JX.bind(null, finditems, cols[ii]));
|
|
||||||
|
|
||||||
list.listen('didSend', JX.bind(list, onupdate, cols[ii]));
|
|
||||||
list.listen('didReceive', JX.bind(list, onupdate, cols[ii]));
|
|
||||||
|
|
||||||
list.listen('didDrop', JX.bind(null, ondrop, list));
|
|
||||||
|
|
||||||
list.listen('didBeginDrag', JX.bind(null, onbegindrag));
|
|
||||||
list.listen('didEndDrag', JX.bind(null, onenddrag));
|
|
||||||
|
|
||||||
lists.push(list);
|
|
||||||
|
|
||||||
onupdate(cols[ii]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ii = 0; ii < lists.length; ii++) {
|
|
||||||
lists[ii].setGroup(lists);
|
|
||||||
}
|
|
||||||
|
|
||||||
var onedit = function(column, r) {
|
|
||||||
var new_card = JX.$H(r.tasks).getNode();
|
var new_card = JX.$H(r.tasks).getNode();
|
||||||
var new_data = JX.Stratcom.getData(new_card);
|
var new_data = JX.Stratcom.getData(new_card);
|
||||||
var items = finditems(column);
|
var items = finditems(column);
|
||||||
|
@ -241,6 +216,40 @@ JX.behavior('project-boards', function(config) {
|
||||||
onupdate(column);
|
onupdate(column);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function update_statics(update_config) {
|
||||||
|
statics.boardID = update_config.boardID;
|
||||||
|
statics.projectPHID = update_config.projectPHID;
|
||||||
|
statics.order = update_config.order;
|
||||||
|
statics.moveURI = update_config.moveURI;
|
||||||
|
statics.createURI = update_config.createURI;
|
||||||
|
}
|
||||||
|
|
||||||
|
function init_board() {
|
||||||
|
var lists = [];
|
||||||
|
var ii;
|
||||||
|
var cols = getcolumns();
|
||||||
|
|
||||||
|
for (ii = 0; ii < cols.length; ii++) {
|
||||||
|
var list = new JX.DraggableList('project-card', cols[ii])
|
||||||
|
.setFindItemsHandler(JX.bind(null, finditems, cols[ii]));
|
||||||
|
|
||||||
|
list.listen('didSend', JX.bind(list, onupdate, cols[ii]));
|
||||||
|
list.listen('didReceive', JX.bind(list, onupdate, cols[ii]));
|
||||||
|
|
||||||
|
list.listen('didDrop', JX.bind(null, ondrop, list));
|
||||||
|
|
||||||
|
list.listen('didBeginDrag', JX.bind(null, onbegindrag));
|
||||||
|
list.listen('didEndDrag', JX.bind(null, onenddrag));
|
||||||
|
|
||||||
|
lists.push(list);
|
||||||
|
|
||||||
|
onupdate(cols[ii]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ii = 0; ii < lists.length; ii++) {
|
||||||
|
lists[ii].setGroup(lists);
|
||||||
|
}
|
||||||
|
|
||||||
JX.Stratcom.listen(
|
JX.Stratcom.listen(
|
||||||
'click',
|
'click',
|
||||||
['edit-project-card'],
|
['edit-project-card'],
|
||||||
|
@ -250,7 +259,7 @@ JX.behavior('project-boards', function(config) {
|
||||||
var request_data = {
|
var request_data = {
|
||||||
responseType: 'card',
|
responseType: 'card',
|
||||||
columnPHID: JX.Stratcom.getData(column).columnPHID,
|
columnPHID: JX.Stratcom.getData(column).columnPHID,
|
||||||
order: config.order
|
order: statics.order
|
||||||
};
|
};
|
||||||
new JX.Workflow(e.getNode('tag:a').href, request_data)
|
new JX.Workflow(e.getNode('tag:a').href, request_data)
|
||||||
.setHandler(JX.bind(null, onedit, column))
|
.setHandler(JX.bind(null, onedit, column))
|
||||||
|
@ -270,8 +279,8 @@ JX.behavior('project-boards', function(config) {
|
||||||
var request_data = {
|
var request_data = {
|
||||||
responseType: 'card',
|
responseType: 'card',
|
||||||
columnPHID: column_phid,
|
columnPHID: column_phid,
|
||||||
projects: config.projectPHID,
|
projects: statics.projectPHID,
|
||||||
order: config.order
|
order: statics.order
|
||||||
};
|
};
|
||||||
var cols = getcolumns();
|
var cols = getcolumns();
|
||||||
var ii;
|
var ii;
|
||||||
|
@ -282,9 +291,61 @@ JX.behavior('project-boards', function(config) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new JX.Workflow(config.createURI, request_data)
|
new JX.Workflow(statics.createURI, request_data)
|
||||||
.setHandler(JX.bind(null, onedit, column))
|
.setHandler(JX.bind(null, onedit, column))
|
||||||
.start();
|
.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
JX.Stratcom.listen('click', 'boards-dropdown-menu', function(e) {
|
||||||
|
var data = e.getNodeData('boards-dropdown-menu');
|
||||||
|
if (data.menu) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.kill();
|
||||||
|
|
||||||
|
var list = JX.$H(data.items).getFragment().firstChild;
|
||||||
|
|
||||||
|
var button = e.getNode('boards-dropdown-menu');
|
||||||
|
data.menu = new JX.PHUIXDropdownMenu(button);
|
||||||
|
data.menu.setContent(list);
|
||||||
|
data.menu.open();
|
||||||
|
|
||||||
|
JX.DOM.listen(list, 'click', 'tag:a', function(e) {
|
||||||
|
if (!e.isNormalClick()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
data.menu.close();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
JX.Stratcom.listen(
|
||||||
|
'quicksand-redraw',
|
||||||
|
null,
|
||||||
|
function (e) {
|
||||||
|
var data = e.getData();
|
||||||
|
if (!data.newResponse.boardConfig) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var new_config;
|
||||||
|
if (data.fromServer) {
|
||||||
|
new_config = data.newResponse.boardConfig;
|
||||||
|
statics.boardConfigCache[data.newResponseID] = new_config;
|
||||||
|
} else {
|
||||||
|
new_config = statics.boardConfigCache[data.newResponseID];
|
||||||
|
statics.boardID = new_config.boardID;
|
||||||
|
}
|
||||||
|
update_statics(new_config);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!statics.setup) {
|
||||||
|
update_statics(config);
|
||||||
|
var current_page_id = JX.Quicksand.getCurrentPageID();
|
||||||
|
statics.boardConfigCache = {};
|
||||||
|
statics.boardConfigCache[current_page_id] = config;
|
||||||
|
statics.setup = init_board();
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -38,7 +38,6 @@ JX.behavior('dark-console', function(config, statics) {
|
||||||
'quicksand-redraw',
|
'quicksand-redraw',
|
||||||
null,
|
null,
|
||||||
function (e) {
|
function (e) {
|
||||||
e.kill();
|
|
||||||
var data = e.getData();
|
var data = e.getData();
|
||||||
var new_console;
|
var new_console;
|
||||||
if (data.fromServer) {
|
if (data.fromServer) {
|
||||||
|
|
Loading…
Reference in a new issue