OStatus subscription page fixups; works but needs lots of UI loving!
- ostatussub via subscribe button now works again (changed to take profile instead of feed, patched up to the new discovery) - added a quickie hack to allow putting your remote profile URI in place of webfinger acct through the remote-sub button (needs to be patched up to do proper discovery via XRDS or a link or something)
This commit is contained in:
@@ -37,7 +37,7 @@ class OStatusInitAction extends Action
|
||||
parent::prepare($args);
|
||||
|
||||
if (common_logged_in()) {
|
||||
$this->clientError(_('You can use the local subscription!'));
|
||||
$this->clientError(_m('You can use the local subscription!'));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ class OStatusInitAction extends Action
|
||||
/* Use a session token for CSRF protection. */
|
||||
$token = $this->trimmed('token');
|
||||
if (!$token || $token != common_session_token()) {
|
||||
$this->showForm(_('There was a problem with your session token. '.
|
||||
$this->showForm(_m('There was a problem with your session token. '.
|
||||
'Try again, please.'));
|
||||
return;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class OStatusInitAction extends Action
|
||||
$this->xw->startDocument('1.0', 'UTF-8');
|
||||
$this->elementStart('html');
|
||||
$this->elementStart('head');
|
||||
$this->element('title', null, _('Subscribe to user'));
|
||||
$this->element('title', null, _m('Subscribe to user'));
|
||||
$this->elementEnd('head');
|
||||
$this->elementStart('body');
|
||||
$this->showContent();
|
||||
@@ -91,50 +91,78 @@ class OStatusInitAction extends Action
|
||||
'class' => 'form_settings',
|
||||
'action' => common_local_url('ostatusinit')));
|
||||
$this->elementStart('fieldset');
|
||||
$this->element('legend', null, sprintf(_('Subscribe to %s'), $this->nickname));
|
||||
$this->element('legend', null, sprintf(_m('Subscribe to %s'), $this->nickname));
|
||||
$this->hidden('token', common_session_token());
|
||||
|
||||
$this->elementStart('ul', 'form_data');
|
||||
$this->elementStart('li', array('id' => 'ostatus_nickname'));
|
||||
$this->input('nickname', _('User nickname'), $this->nickname,
|
||||
_('Nickname of the user you want to follow'));
|
||||
$this->input('nickname', _m('User nickname'), $this->nickname,
|
||||
_m('Nickname of the user you want to follow'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li', array('id' => 'ostatus_profile'));
|
||||
$this->input('acct', _('Profile Account'), $this->acct,
|
||||
_('Your account id (i.e. user@identi.ca)'));
|
||||
$this->input('acct', _m('Profile Account'), $this->acct,
|
||||
_m('Your account id (i.e. user@identi.ca)'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementEnd('ul');
|
||||
$this->submit('submit', _('Subscribe'));
|
||||
$this->submit('submit', _m('Subscribe'));
|
||||
$this->elementEnd('fieldset');
|
||||
$this->elementEnd('form');
|
||||
}
|
||||
|
||||
function ostatusConnect()
|
||||
{
|
||||
$w = new Webfinger;
|
||||
|
||||
$result = $w->lookup($this->acct);
|
||||
foreach ($result->links as $link) {
|
||||
if ($link['rel'] == 'http://ostatus.org/schema/1.0/subscribe') {
|
||||
// We found a URL - let's redirect!
|
||||
|
||||
$user = User::staticGet('nickname', $this->nickname);
|
||||
|
||||
$feed_url = common_local_url('ApiTimelineUser',
|
||||
array('id' => $user->id,
|
||||
'format' => 'atom'));
|
||||
$url = $w->applyTemplate($link['template'], $feed_url);
|
||||
|
||||
common_redirect($url, 303);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$opts = array('allowed_schemes' => array('http', 'https', 'acct'));
|
||||
if (Validate::uri($this->acct, $opts)) {
|
||||
$bits = parse_url($this->acct);
|
||||
if ($bits['scheme'] == 'acct') {
|
||||
$this->connectWebfinger($bits['path']);
|
||||
} else {
|
||||
$this->connectProfile($this->acct);
|
||||
}
|
||||
} elseif (strpos('@', $this->acct) !== false) {
|
||||
$this->connectWebfinger($this->acct);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function connectWebfinger($acct)
|
||||
{
|
||||
$w = new Webfinger;
|
||||
|
||||
$result = $w->lookup($acct);
|
||||
if (!$result) {
|
||||
$this->clientError(_m("Couldn't look up OStatus account profile."));
|
||||
}
|
||||
foreach ($result->links as $link) {
|
||||
if ($link['rel'] == 'http://ostatus.org/schema/1.0/subscribe') {
|
||||
// We found a URL - let's redirect!
|
||||
|
||||
$user = User::staticGet('nickname', $this->nickname);
|
||||
$target_profile = common_local_url('userbyid', array('id' => $user->id));
|
||||
|
||||
$url = $w->applyTemplate($link['template'], $feed_url);
|
||||
|
||||
common_redirect($url, 303);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function connectProfile($subscriber_profile)
|
||||
{
|
||||
$user = User::staticGet('nickname', $this->nickname);
|
||||
$target_profile = common_local_url('userbyid', array('id' => $user->id));
|
||||
|
||||
// @fixme hack hack! We should look up the remote sub URL from XRDS
|
||||
$suburl = preg_replace('!^(.*)/(.*?)$!', '$1/main/ostatussub', $subscriber_profile);
|
||||
$suburl .= '?profile=' . urlencode($target_profile);
|
||||
|
||||
common_redirect($suburl, 303);
|
||||
}
|
||||
|
||||
function title()
|
||||
{
|
||||
return _('OStatus Connect');
|
||||
return _m('OStatus Connect');
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user