From a7f641eee2686ea09315dc1c8f33050bb62ffe7e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 3 Nov 2013 23:12:29 +0100 Subject: [PATCH] Allow public access to main page, with login button in the top right, and show activity feed on the main page. --- .../PhabricatorApplicationAuth.php | 9 ++++ .../PhabricatorDirectoryController.php | 15 ++++++- .../PhabricatorDirectoryMainController.php | 44 +++++++++++++++++++ .../PhabricatorApplicationFeed.php | 2 +- .../PhabricatorApplicationProject.php | 2 +- 5 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/applications/auth/application/PhabricatorApplicationAuth.php b/src/applications/auth/application/PhabricatorApplicationAuth.php index 76c95323fd..da318e7992 100644 --- a/src/applications/auth/application/PhabricatorApplicationAuth.php +++ b/src/applications/auth/application/PhabricatorApplicationAuth.php @@ -42,6 +42,15 @@ final class PhabricatorApplicationAuth extends PhabricatorApplication { ->setSelected(($controller instanceof PhabricatorLogoutController)); $items[] = $item; } + else { + $item = id(new PHUIListItemView()) + ->addClass('core-menu-item') + ->setName(pht('Log In or Register')) + ->setRenderNameAsTooltip(false) + ->setIcon('authentication') + ->setHref('/login/'); + $items[] = $item; + } return $items; } diff --git a/src/applications/directory/controller/PhabricatorDirectoryController.php b/src/applications/directory/controller/PhabricatorDirectoryController.php index 07df8c8589..5c5348f8e0 100644 --- a/src/applications/directory/controller/PhabricatorDirectoryController.php +++ b/src/applications/directory/controller/PhabricatorDirectoryController.php @@ -2,6 +2,14 @@ abstract class PhabricatorDirectoryController extends PhabricatorController { + public function shouldRequireLogin() { + if (PhabricatorEnv::getEnvConfig('policy.allow-public')) { + return false; + } + + return parent::shouldRequireLogin(); + } + public function buildStandardPageResponse($view, array $data) { $page = $this->buildStandardPageView(); @@ -40,7 +48,12 @@ abstract class PhabricatorDirectoryController extends PhabricatorController { $status = array(); foreach ($applications as $key => $application) { - $status[get_class($application)] = $application->loadStatus($user); + if ($user->isLoggedIn()) { + $status[get_class($application)] = $application->loadStatus($user); + } + else { + $status[get_class($application)] = array(); + } } $tile_groups = array(); diff --git a/src/applications/directory/controller/PhabricatorDirectoryMainController.php b/src/applications/directory/controller/PhabricatorDirectoryMainController.php index 8d4cb2f827..8471c09080 100644 --- a/src/applications/directory/controller/PhabricatorDirectoryMainController.php +++ b/src/applications/directory/controller/PhabricatorDirectoryMainController.php @@ -60,6 +60,7 @@ final class PhabricatorDirectoryMainController $jump_panel = $this->buildJumpPanel(); $revision_panel = $this->buildRevisionPanel(); + $feed_panel = $this->buildFeedPanel(); $content = array( $jump_panel, @@ -71,6 +72,7 @@ final class PhabricatorDirectoryMainController $audit_panel, $commit_panel, $this->minipanels, + $feed_panel, ); $nav->appendChild($content); @@ -115,6 +117,10 @@ final class PhabricatorDirectoryMainController } $user = $this->getRequest()->getUser(); + if (!$user->isLoggedIn()) { + return null; + } + $task_query = id(new ManiphestTaskQuery()) ->setViewer($user) @@ -205,6 +211,10 @@ final class PhabricatorDirectoryMainController private function buildRevisionPanel() { $user = $this->getRequest()->getUser(); + if (!$user->isLoggedIn()) { + return null; + } + $user_phid = $user->getPHID(); $revision_query = id(new DifferentialRevisionQuery()) @@ -283,6 +293,10 @@ final class PhabricatorDirectoryMainController private function buildTasksPanel() { $user = $this->getRequest()->getUser(); + if (!$user->isLoggedIn()) { + return null; + } + $user_phid = $user->getPHID(); $task_query = id(new ManiphestTaskQuery()) @@ -420,6 +434,9 @@ final class PhabricatorDirectoryMainController public function buildAuditPanel() { $request = $this->getRequest(); $user = $request->getUser(); + if (!$user->isLoggedIn()) { + return null; + } $phids = PhabricatorAuditCommentEditor::loadAuditPHIDsForUser($user); @@ -468,6 +485,9 @@ final class PhabricatorDirectoryMainController public function buildCommitPanel() { $request = $this->getRequest(); $user = $request->getUser(); + if (!$user->isLoggedIn()) { + return null; + } $phids = array($user->getPHID()); @@ -510,4 +530,28 @@ final class PhabricatorDirectoryMainController return $panel; } + public function buildFeedPanel() { + $request = $this->getRequest(); + $user = $request->getUser(); + + $viewer = PhabricatorUser::getOmnipotentUser(); + + $query = new PhabricatorFeedQuery(); + $query->setViewer($viewer); + $query->setLimit(25); + $stories = $query->execute(); + + $builder = new PhabricatorFeedBuilder($stories); + $builder + ->setFramed(true) + ->setUser($viewer); + + $panel = new AphrontPanelView(); + $panel->setHeader('Activity Feed'); + $panel->setNoBackground(); + $panel->appendChild($builder->buildView()); + + return $panel; + } + } diff --git a/src/applications/feed/application/PhabricatorApplicationFeed.php b/src/applications/feed/application/PhabricatorApplicationFeed.php index 4f2cafc8d4..b784fd409e 100644 --- a/src/applications/feed/application/PhabricatorApplicationFeed.php +++ b/src/applications/feed/application/PhabricatorApplicationFeed.php @@ -29,7 +29,7 @@ final class PhabricatorApplicationFeed extends PhabricatorApplication { } public function getApplicationGroup() { - return self::GROUP_COMMUNICATION; + return self::GROUP_CORE; } } diff --git a/src/applications/project/application/PhabricatorApplicationProject.php b/src/applications/project/application/PhabricatorApplicationProject.php index ba7590a56c..3c532db0c4 100644 --- a/src/applications/project/application/PhabricatorApplicationProject.php +++ b/src/applications/project/application/PhabricatorApplicationProject.php @@ -23,7 +23,7 @@ final class PhabricatorApplicationProject extends PhabricatorApplication { } public function getApplicationGroup() { - return self::GROUP_ORGANIZATION; + return self::GROUP_CORE; } public function getRemarkupRules() {