diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -409,7 +409,7 @@ 'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f', 'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9', 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172', - 'rsrc/js/application/projects/WorkboardBoard.js' => '106d870f', + 'rsrc/js/application/projects/WorkboardBoard.js' => 'c02a5497', 'rsrc/js/application/projects/WorkboardCard.js' => '0392a5d8', 'rsrc/js/application/projects/WorkboardCardTemplate.js' => '2a61f8d4', 'rsrc/js/application/projects/WorkboardColumn.js' => 'c3d24e63', @@ -737,7 +737,7 @@ 'javelin-view-renderer' => '9aae2b66', 'javelin-view-visitor' => '308f9fe4', 'javelin-websocket' => 'fdc13e4e', - 'javelin-workboard-board' => '106d870f', + 'javelin-workboard-board' => 'c02a5497', 'javelin-workboard-card' => '0392a5d8', 'javelin-workboard-card-template' => '2a61f8d4', 'javelin-workboard-column' => 'c3d24e63', @@ -1015,18 +1015,6 @@ 'javelin-workflow', 'phuix-icon-view', ), - '106d870f' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-util', - 'javelin-stratcom', - 'javelin-workflow', - 'phabricator-draggable-list', - 'javelin-workboard-column', - 'javelin-workboard-header-template', - 'javelin-workboard-card-template', - 'javelin-workboard-order-template', - ), '111bfd2d' => array( 'javelin-install', ), @@ -1940,6 +1928,18 @@ 'bde53589' => array( 'phui-inline-comment-view-css', ), + 'c02a5497' => array( + 'javelin-install', + 'javelin-dom', + 'javelin-util', + 'javelin-stratcom', + 'javelin-workflow', + 'phabricator-draggable-list', + 'javelin-workboard-column', + 'javelin-workboard-header-template', + 'javelin-workboard-card-template', + 'javelin-workboard-order-template', + ), 'c03f2fb4' => array( 'javelin-install', ), diff --git a/src/applications/project/controller/PhabricatorProjectMoveController.php b/src/applications/project/controller/PhabricatorProjectMoveController.php --- a/src/applications/project/controller/PhabricatorProjectMoveController.php +++ b/src/applications/project/controller/PhabricatorProjectMoveController.php @@ -12,18 +12,8 @@ $column_phid = $request->getStr('columnPHID'); $object_phid = $request->getStr('objectPHID'); - $after_phid = $request->getStr('afterPHID'); - $before_phid = $request->getStr('beforePHID'); - - $after_phids = array(); - if ($after_phid) { - $after_phids[] = $after_phid; - } - - $before_phids = array(); - if ($before_phid) { - $before_phids[] = $before_phid; - } + $after_phids = $request->getStrList('afterPHIDs'); + $before_phids = $request->getStrList('beforePHIDs'); $order = $request->getStr('order'); if (!strlen($order)) { @@ -98,13 +88,10 @@ ->setObjectPHIDs(array($object_phid)) ->executeLayout(); - $order_params = array(); - if ($after_phid) { - $order_params['afterPHIDs'] = $after_phids; - } - if ($before_phid) { - $order_params['beforePHIDs'] = $before_phids; - } + $order_params = array( + 'afterPHIDs' => $after_phids, + 'beforePHIDs' => $before_phids, + ); $xactions = array(); $xactions[] = id(new ManiphestTransaction()) diff --git a/webroot/rsrc/js/application/projects/WorkboardBoard.js b/webroot/rsrc/js/application/projects/WorkboardBoard.js --- a/webroot/rsrc/js/application/projects/WorkboardBoard.js +++ b/webroot/rsrc/js/application/projects/WorkboardBoard.js @@ -409,8 +409,8 @@ _getDropContext: function(after_node, item) { var header_key; - var before_phid; - var after_phid; + var after_phids = []; + var before_phids = []; // We're going to send an "afterPHID" and a "beforePHID" if the card // was dropped immediately adjacent to another card. If a card was @@ -424,19 +424,16 @@ var after_card = after_node; while (after_card) { after_data = JX.Stratcom.getData(after_card); - if (after_data.objectPHID) { - break; - } + if (after_data.headerKey) { break; } - after_card = after_card.previousSibling; - } - if (after_data) { if (after_data.objectPHID) { - after_phid = after_data.objectPHID; + after_phids.push(after_data.objectPHID); } + + after_card = after_card.previousSibling; } if (item) { @@ -444,19 +441,16 @@ var before_card = item.nextSibling; while (before_card) { before_data = JX.Stratcom.getData(before_card); - if (before_data.objectPHID) { - break; - } + if (before_data.headerKey) { break; } - before_card = before_card.nextSibling; - } - if (before_data) { if (before_data.objectPHID) { - before_phid = before_data.objectPHID; + before_phids.push(before_data.objectPHID); } + + before_card = before_card.nextSibling; } } @@ -476,8 +470,8 @@ return { headerKey: header_key, - afterPHID: after_phid, - beforePHID: before_phid + afterPHIDs: after_phids, + beforePHIDs: before_phids }; }, @@ -496,14 +490,8 @@ }; var context = this._getDropContext(after_node, item); - - if (context.afterPHID) { - data.afterPHID = context.afterPHID; - } - - if (context.beforePHID) { - data.beforePHID = context.beforePHID; - } + data.afterPHIDs = context.afterPHIDs.join(','); + data.beforePHIDs = context.beforePHIDs.join(','); if (context.headerKey) { var properties = this.getHeaderTemplate(context.headerKey) @@ -530,13 +518,18 @@ src_phid, dst_phid); + var after_phid = null; + if (data.afterPHIDs.length) { + after_phid = data.afterPHIDs[0]; + } + var onupdate = JX.bind( this, this._oncardupdate, list, src_phid, dst_phid, - data.afterPHID); + after_phid); new JX.Workflow(this.getController().getMoveURI(), data) .setHandler(onupdate)