Page MenuHomePhabricator

D10189.id24516.diff
No OneTemporary

D10189.id24516.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -417,7 +417,7 @@
'rsrc/js/application/projects/behavior-boards-dropdown.js' => '0ec56e1d',
'rsrc/js/application/projects/behavior-project-boards.js' => 'f47fa23b',
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
- 'rsrc/js/application/projects/behavior-reorder-columns.js' => '09eee344',
+ 'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
'rsrc/js/application/releeph/releeph-request-state-change.js' => 'ab836011',
'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'de2e896f',
@@ -647,7 +647,7 @@
'javelin-behavior-releeph-request-typeahead' => 'de2e896f',
'javelin-behavior-remarkup-preview' => 'f7379f45',
'javelin-behavior-reorder-applications' => '76b9fc3e',
- 'javelin-behavior-reorder-columns' => '09eee344',
+ 'javelin-behavior-reorder-columns' => 'e1d25dfb',
'javelin-behavior-repository-crossreference' => 'f9539603',
'javelin-behavior-search-reorder-queries' => 'e9581f08',
'javelin-behavior-select-on-click' => '4e3e79a6',
@@ -876,13 +876,6 @@
'javelin-mask',
'phabricator-drag-and-drop-file-upload',
),
- '09eee344' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-dom',
- 'phabricator-draggable-list',
- ),
'0a3f3021' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1753,6 +1746,13 @@
'javelin-dom',
'phabricator-prefab',
),
+ 'e1d25dfb' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-dom',
+ 'phabricator-draggable-list',
+ ),
'e1ff79b1' => array(
'javelin-behavior',
'javelin-stratcom',
diff --git a/resources/sql/autopatches/20140808.boardprop.1.sql b/resources/sql/autopatches/20140808.boardprop.1.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140808.boardprop.1.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_project.project_column
+ ADD properties LONGTEXT NOT NULL COLLATE utf8_bin;
diff --git a/resources/sql/autopatches/20140808.boardprop.2.sql b/resources/sql/autopatches/20140808.boardprop.2.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140808.boardprop.2.sql
@@ -0,0 +1,2 @@
+UPDATE {$NAMESPACE}_project.project_column
+ SET properties = '{}' WHERE properties = '';
diff --git a/resources/sql/autopatches/20140808.boardprop.3.php b/resources/sql/autopatches/20140808.boardprop.3.php
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140808.boardprop.3.php
@@ -0,0 +1,24 @@
+<?php
+
+$table = new PhabricatorProjectColumn();
+$conn_w = $table->establishConnection('w');
+
+foreach (new LiskMigrationIterator($table) as $column) {
+ $id = $column->getID();
+
+ echo "Adjusting column {$id}...\n";
+ if ($column->getSequence() == 0) {
+
+ $properties = $column->getProperties();
+ $properties['isDefault'] = true;
+
+ queryfx(
+ $conn_w,
+ 'UPDATE %T SET properties = %s WHERE id = %d',
+ $table->getTableName(),
+ json_encode($properties),
+ $id);
+ }
+}
+
+echo "Done.\n";
diff --git a/src/applications/project/controller/PhabricatorProjectBoardImportController.php b/src/applications/project/controller/PhabricatorProjectBoardImportController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardImportController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardImportController.php
@@ -60,6 +60,7 @@
->setSequence($import_column->getSequence())
->setProjectPHID($project->getPHID())
->setName($import_column->getName())
+ ->setProperties($import_column->getProperties())
->save();
}
$table->saveTransaction();
diff --git a/src/applications/project/controller/PhabricatorProjectBoardReorderController.php b/src/applications/project/controller/PhabricatorProjectBoardReorderController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardReorderController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardReorderController.php
@@ -54,11 +54,9 @@
return new Aphront404Response();
}
- // TODO: We could let you move the backlog column around if you really
- // want, but for now we use sequence position 0 as magic.
$target_column = $columns[$column_phid];
$new_sequence = $request->getInt('sequence');
- if ($target_column->isDefaultColumn() || $new_sequence < 1) {
+ if ($new_sequence < 0) {
return new Aphront404Response();
}
@@ -101,11 +99,6 @@
$list_id = celerity_generate_unique_node_id();
- $static_list = id(new PHUIObjectItemListView())
- ->setUser($viewer)
- ->setFlush(true)
- ->setStackable(true);
-
$list = id(new PHUIObjectItemListView())
->setUser($viewer)
->setID($list_id)
@@ -120,21 +113,15 @@
$item->setDisabled(true);
}
- if ($column->isDefaultColumn()) {
- $item->setDisabled(true);
- $static_list->addItem($item);
- } else {
- $item->setGrippable(true);
- $item->addSigil('board-column');
- $item->setMetadata(
- array(
- 'columnPHID' => $column->getPHID(),
- 'columnSequence' => $column->getSequence(),
- ));
-
- $list->addItem($item);
- }
+ $item->setGrippable(true);
+ $item->addSigil('board-column');
+ $item->setMetadata(
+ array(
+ 'columnPHID' => $column->getPHID(),
+ 'columnSequence' => $column->getSequence(),
+ ));
+ $list->addItem($item);
}
Javelin::initBehavior(
@@ -147,9 +134,7 @@
return $this->newDialog()
->setTitle(pht('Reorder Columns'))
->setWidth(AphrontDialogView::WIDTH_FORM)
- ->appendParagraph(pht('This column can not be moved:'))
- ->appendChild($static_list)
- ->appendParagraph(pht('Drag and drop these columns to reorder them:'))
+ ->appendParagraph(pht('Drag and drop columns to reorder them.'))
->appendChild($list)
->addSubmitButton(pht('Done'));
}
diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
--- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php
+++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php
@@ -74,6 +74,7 @@
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
$column = PhabricatorProjectColumn::initializeNewColumn($viewer)
->setSequence(0)
+ ->setProperty('isDefault', true)
->setProjectPHID($project->getPHID())
->save();
$column->attachProject($project);
diff --git a/src/applications/project/storage/PhabricatorProjectColumn.php b/src/applications/project/storage/PhabricatorProjectColumn.php
--- a/src/applications/project/storage/PhabricatorProjectColumn.php
+++ b/src/applications/project/storage/PhabricatorProjectColumn.php
@@ -17,6 +17,7 @@
protected $status;
protected $projectPHID;
protected $sequence;
+ protected $properties = array();
private $project = self::ATTACHABLE;
@@ -29,6 +30,9 @@
public function getConfiguration() {
return array(
self::CONFIG_AUX_PHID => true,
+ self::CONFIG_SERIALIZATION => array(
+ 'properties' => self::SERIALIZATION_JSON,
+ ),
) + parent::getConfiguration();
}
@@ -47,7 +51,7 @@
}
public function isDefaultColumn() {
- return ($this->getSequence() == 0);
+ return (bool)$this->getProperty('isDefault');
}
public function isHidden() {
@@ -75,9 +79,19 @@
if ($this->isDefaultColumn()) {
return PHUIActionHeaderView::HEADER_DARK_GREY;
}
+
return PHUIActionHeaderView::HEADER_GREY;
}
+ public function getProperty($key, $default = null) {
+ return idx($this->properties, $key, $default);
+ }
+
+ public function setProperty($key, $value) {
+ $this->properties[$key] = $value;
+ return $this;
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/webroot/rsrc/js/application/projects/behavior-reorder-columns.js b/webroot/rsrc/js/application/projects/behavior-reorder-columns.js
--- a/webroot/rsrc/js/application/projects/behavior-reorder-columns.js
+++ b/webroot/rsrc/js/application/projects/behavior-reorder-columns.js
@@ -37,7 +37,7 @@
var parameters = {
columnPHID: node_data.columnPHID,
- sequence: (sequence === null) ? 1 : (parseInt(sequence, 10) + 1)
+ sequence: (sequence === null) ? 0 : (parseInt(sequence, 10) + 1)
};
new JX.Workflow(config.reorderURI, parameters)

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 6:09 AM (6 d, 15 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7706271
Default Alt Text
D10189.id24516.diff (8 KB)

Event Timeline