diff --git a/resources/sql/autopatches/20160122.project.1.boarddefault.php b/resources/sql/autopatches/20160122.project.1.boarddefault.php new file mode 100644 index 0000000000..8765184629 --- /dev/null +++ b/resources/sql/autopatches/20160122.project.1.boarddefault.php @@ -0,0 +1,60 @@ +establishConnection('w'); + +$panel_table = id(new PhabricatorProfilePanelConfiguration()); +$panel_conn = $panel_table->establishConnection('w'); + +foreach (new LiskMigrationIterator($project_table) as $project) { + $columns = queryfx_all( + $conn_w, + 'SELECT * FROM %T WHERE projectPHID = %s', + id(new PhabricatorProjectColumn())->getTableName(), + $project->getPHID()); + + // This project has no columns, so we don't need to change anything. + if (!$columns) { + continue; + } + + // This project has columns, so set its workboard flag. + queryfx( + $conn_w, + 'UPDATE %T SET hasWorkboard = 1 WHERE id = %d', + $project->getTableName(), + $project->getID()); + + // Try to set the default menu item to "Workboard". + $config = queryfx_all( + $panel_conn, + 'SELECT * FROM %T WHERE profilePHID = %s', + $panel_table->getTableName(), + $project->getPHID()); + + // There are already some settings, so don't touch them. + if ($config) { + continue; + } + + queryfx( + $panel_conn, + 'INSERT INTO %T + (phid, profilePHID, panelKey, builtinKey, visibility, panelProperties, + panelOrder, dateCreated, dateModified) + VALUES (%s, %s, %s, %s, %s, %s, %d, %d, %d)', + $panel_table->getTableName(), + $panel_table->generatePHID(), + $project->getPHID(), + PhabricatorProjectWorkboardProfilePanel::PANELKEY, + PhabricatorProject::PANEL_WORKBOARD, + PhabricatorProfilePanelConfiguration::VISIBILITY_DEFAULT, + '{}', + 2, + PhabricatorTime::getNow(), + PhabricatorTime::getNow()); +} diff --git a/src/applications/project/controller/PhabricatorProjectBoardImportController.php b/src/applications/project/controller/PhabricatorProjectBoardImportController.php index 46877b9e14..8df4e8b810 100644 --- a/src/applications/project/controller/PhabricatorProjectBoardImportController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardImportController.php @@ -57,6 +57,9 @@ final class PhabricatorProjectBoardImportController ->setProperties($import_column->getProperties()) ->save(); } + + $project->setHasWorkboard(1)->save(); + $table->saveTransaction(); return id(new AphrontRedirectResponse())->setURI($board_uri); diff --git a/src/applications/project/controller/PhabricatorProjectBoardViewController.php b/src/applications/project/controller/PhabricatorProjectBoardViewController.php index f2556222e7..e993c1b85b 100644 --- a/src/applications/project/controller/PhabricatorProjectBoardViewController.php +++ b/src/applications/project/controller/PhabricatorProjectBoardViewController.php @@ -769,6 +769,8 @@ final class PhabricatorProjectBoardViewController ->setProjectPHID($project->getPHID()) ->save(); + $project->setHasWorkboard(1)->save(); + return id(new AphrontRedirectResponse()) ->setURI($board_uri); case 'import': diff --git a/src/applications/project/profilepanel/PhabricatorProjectWorkboardProfilePanel.php b/src/applications/project/profilepanel/PhabricatorProjectWorkboardProfilePanel.php index f8b2abfc2f..9bf28cdb31 100644 --- a/src/applications/project/profilepanel/PhabricatorProjectWorkboardProfilePanel.php +++ b/src/applications/project/profilepanel/PhabricatorProjectWorkboardProfilePanel.php @@ -52,15 +52,7 @@ final class PhabricatorProjectWorkboardProfilePanel $project = $config->getProfileObject(); - $columns = id(new PhabricatorProjectColumnQuery()) - ->setViewer($viewer) - ->withProjectPHIDs(array($project->getPHID())) - ->execute(); - if ($columns) { - $icon = 'fa-columns'; - } else { - $icon = 'fa-columns grey'; - } + $has_workboard = $project->getHasWorkboard(); $id = $project->getID(); $href = "/project/board/{$id}/"; @@ -69,7 +61,8 @@ final class PhabricatorProjectWorkboardProfilePanel $item = $this->newItem() ->setHref($href) ->setName($name) - ->setIcon($icon); + ->setDisabled(!$has_workboard) + ->setIcon('fa-columns'); return array( $item,