mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-19 20:10:55 +01:00
Conpherence - allow for public rooms to really work
Summary: Fixes T8102. This makes public rooms actually work. Also lets users see the search listings page so they can wander into all public rooms without logging in. Test Plan: As logged out user, visited ZXX and ZYY. ZXX was public, so I could see it and had a little "Login to Participate" button in the bottom. ZYY was not public so I was prompted to login. Back on ZXX I clicked the Conpherence crumb and got a sensible UI where most links prompted me to login. CLicked "search" and saw listings for all public rooms. Reviewers: epriestley, chad Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T8102 Differential Revision: https://secure.phabricator.com/D12778
This commit is contained in:
parent
188c21ae08
commit
f309960a2d
10 changed files with 58 additions and 12 deletions
|
@ -47,7 +47,7 @@ return array(
|
|||
'rsrc/css/application/config/unhandled-exception.css' => '37d4f9a2',
|
||||
'rsrc/css/application/conpherence/durable-column.css' => '2e68a92f',
|
||||
'rsrc/css/application/conpherence/menu.css' => 'f389e048',
|
||||
'rsrc/css/application/conpherence/message-pane.css' => '3150e2a2',
|
||||
'rsrc/css/application/conpherence/message-pane.css' => '0e75feef',
|
||||
'rsrc/css/application/conpherence/notification.css' => 'd208f806',
|
||||
'rsrc/css/application/conpherence/transaction.css' => '885433f0',
|
||||
'rsrc/css/application/conpherence/update.css' => '1099a660',
|
||||
|
@ -514,7 +514,7 @@ return array(
|
|||
'config-welcome-css' => '6abd79be',
|
||||
'conpherence-durable-column-view' => '2e68a92f',
|
||||
'conpherence-menu-css' => 'f389e048',
|
||||
'conpherence-message-pane-css' => '3150e2a2',
|
||||
'conpherence-message-pane-css' => '0e75feef',
|
||||
'conpherence-notification-css' => 'd208f806',
|
||||
'conpherence-thread-manager' => '9e507b59',
|
||||
'conpherence-transaction-css' => '885433f0',
|
||||
|
|
|
@ -25,6 +25,10 @@ final class ConpherenceListController extends ConpherenceController {
|
|||
return $mode;
|
||||
}
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$user = $request->getUser();
|
||||
$title = pht('Conpherence');
|
||||
|
|
|
@ -42,9 +42,8 @@ final class ConpherenceNewController extends ConpherenceController {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
$uri = $this->getApplicationURI($conpherence->getID());
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI($uri);
|
||||
->setURI('/'.$conpherence->getMonogram());
|
||||
}
|
||||
} else {
|
||||
$participant_prefill = $request->getStr('participant');
|
||||
|
|
|
@ -36,9 +36,8 @@ final class ConpherenceNewRoomController extends ConpherenceController {
|
|||
->setActor($user)
|
||||
->applyTransactions($conpherence, $xactions);
|
||||
|
||||
$uri = $this->getApplicationURI($conpherence->getID());
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI($uri);
|
||||
->setURI('/'.$conpherence->getMonogram());
|
||||
} catch (PhabricatorApplicationTransactionValidationException $ex) {
|
||||
$validation_exception = $ex;
|
||||
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
final class ConpherenceRoomListController extends ConpherenceController {
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$user = $request->getUser();
|
||||
|
||||
|
|
|
@ -251,7 +251,7 @@ final class ConpherenceUpdateController
|
|||
case 'redirect':
|
||||
default:
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI($this->getApplicationURI($conpherence->getID().'/'));
|
||||
->setURI('/'.$conpherence->getMonogram());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,10 @@ final class ConpherenceViewController extends
|
|||
|
||||
const OLDER_FETCH_LIMIT = 5;
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$user = $request->getUser();
|
||||
|
||||
|
@ -138,7 +142,7 @@ final class ConpherenceViewController extends
|
|||
$conpherence,
|
||||
PhabricatorPolicyCapability::CAN_JOIN);
|
||||
$participating = $conpherence->getParticipantIfExists($user->getPHID());
|
||||
if (!$can_join && !$participating) {
|
||||
if (!$can_join && !$participating && $user->isLoggedIn()) {
|
||||
return null;
|
||||
}
|
||||
$draft = PhabricatorDraft::newFromUserAndKey(
|
||||
|
@ -147,9 +151,20 @@ final class ConpherenceViewController extends
|
|||
if ($participating) {
|
||||
$action = ConpherenceUpdateActions::MESSAGE;
|
||||
$button_text = pht('Send');
|
||||
} else {
|
||||
} else if ($user->isLoggedIn()) {
|
||||
$action = ConpherenceUpdateActions::JOIN_ROOM;
|
||||
$button_text = pht('Join');
|
||||
} else {
|
||||
// user not logged in so give them a login button.
|
||||
$login_href = id(new PhutilURI('/auth/start/'))
|
||||
->setQueryParam('next', '/'.$conpherence->getMonogram());
|
||||
return id(new PHUIFormLayoutView())
|
||||
->addClass('login-to-participate')
|
||||
->appendChild(
|
||||
id(new PHUIButtonView())
|
||||
->setTag('a')
|
||||
->setText(pht('Login to Participate'))
|
||||
->setHref((string)$login_href));
|
||||
}
|
||||
$update_uri = $this->getApplicationURI('update/'.$conpherence->getID().'/');
|
||||
|
||||
|
@ -157,10 +172,10 @@ final class ConpherenceViewController extends
|
|||
|
||||
$form =
|
||||
id(new AphrontFormView())
|
||||
->setUser($user)
|
||||
->setAction($update_uri)
|
||||
->addSigil('conpherence-pontificate')
|
||||
->setWorkflow(true)
|
||||
->setUser($user)
|
||||
->addHiddenInput('action', $action)
|
||||
->appendChild(
|
||||
id(new PhabricatorRemarkupControl())
|
||||
|
|
|
@ -13,6 +13,10 @@ final class ConpherenceWidgetController extends ConpherenceController {
|
|||
return $this->userPreferences;
|
||||
}
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
@ -26,6 +30,9 @@ final class ConpherenceWidgetController extends ConpherenceController {
|
|||
->withIDs(array($conpherence_id))
|
||||
->needWidgetData(true)
|
||||
->executeOne();
|
||||
if (!$conpherence) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
$this->setConpherence($conpherence);
|
||||
|
||||
$this->setUserPreferences($user->loadPreferences());
|
||||
|
@ -138,8 +145,11 @@ final class ConpherenceWidgetController extends ConpherenceController {
|
|||
PhabricatorPolicyCapability::CAN_JOIN);
|
||||
if ($can_join) {
|
||||
$text = pht('Settings are available after joining the room.');
|
||||
} else {
|
||||
} else if ($viewer->isLoggedIn()) {
|
||||
$text = pht('Settings not applicable to rooms you can not join.');
|
||||
} else {
|
||||
$text = pht(
|
||||
'Settings are available after logging in and joining the room.');
|
||||
}
|
||||
return phutil_tag(
|
||||
'div',
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
final class PHUIFormLayoutView extends AphrontView {
|
||||
|
||||
private $classes = array();
|
||||
private $fullWidth;
|
||||
|
||||
public function setFullWidth($width) {
|
||||
|
@ -14,6 +15,11 @@ final class PHUIFormLayoutView extends AphrontView {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function addClass($class) {
|
||||
$this->classes[] = $class;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function appendInstructions($text) {
|
||||
return $this->appendChild(
|
||||
phutil_tag(
|
||||
|
@ -38,7 +44,8 @@ final class PHUIFormLayoutView extends AphrontView {
|
|||
}
|
||||
|
||||
public function render() {
|
||||
$classes = array('phui-form-view');
|
||||
$classes = $this->classes;
|
||||
$classes[] = 'phui-form-view';
|
||||
|
||||
if ($this->fullWidth) {
|
||||
$classes[] = 'phui-form-full-width';
|
||||
|
|
|
@ -113,6 +113,14 @@
|
|||
right: 241px;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .phui-form-view.login-to-participate {
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .login-to-participate a.button {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.conpherence-message-pane .aphront-form-control-submit button,
|
||||
.conpherence-message-pane .aphront-form-control-submit a.button {
|
||||
margin-top: 6px;
|
||||
|
|
Loading…
Reference in a new issue