Link notice posted time to local representation
Notice class got a 'getLocalUrl' function.
This commit is contained in:
parent
e506b8f7f9
commit
4774a25040
@ -27,13 +27,9 @@
|
|||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('STATUSNET') && !defined('LACONICA')) {
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once INSTALLDIR.'/lib/personalgroupnav.php';
|
|
||||||
require_once INSTALLDIR.'/lib/noticelist.php';
|
require_once INSTALLDIR.'/lib/noticelist.php';
|
||||||
require_once INSTALLDIR.'/lib/feedlist.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a single notice
|
* Show a single notice
|
||||||
@ -79,27 +75,24 @@ class ShownoticeAction extends Action
|
|||||||
|
|
||||||
$this->notice = $this->getNotice();
|
$this->notice = $this->getNotice();
|
||||||
|
|
||||||
$cur = common_current_user();
|
if (!$this->notice->inScope($this->scoped)) {
|
||||||
|
|
||||||
if (!empty($cur)) {
|
|
||||||
$curProfile = $cur->getProfile();
|
|
||||||
} else {
|
|
||||||
$curProfile = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$this->notice->inScope($curProfile)) {
|
|
||||||
// TRANS: Client exception thrown when trying a view a notice the user has no access to.
|
// TRANS: Client exception thrown when trying a view a notice the user has no access to.
|
||||||
throw new ClientException(_('Not available.'), 403);
|
throw new ClientException(_('Not available.'), 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->profile = $this->notice->getProfile();
|
$this->profile = $this->notice->getProfile();
|
||||||
|
|
||||||
if (empty($this->profile)) {
|
if (!$this->profile instanceof Profile) {
|
||||||
// TRANS: Server error displayed trying to show a notice without a connected profile.
|
// TRANS: Server error displayed trying to show a notice without a connected profile.
|
||||||
$this->serverError(_('Notice has no profile.'), 500);
|
$this->serverError(_('Notice has no profile.'), 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->user = User::getKV('id', $this->profile->id);
|
try {
|
||||||
|
$this->user = $this->profile->getUser();
|
||||||
|
} catch (NoSuchUserException $e) {
|
||||||
|
// FIXME: deprecate $this->user stuff in extended classes
|
||||||
|
$this->user = null;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
|
$this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
|
||||||
@ -214,19 +207,9 @@ class ShownoticeAction extends Action
|
|||||||
{
|
{
|
||||||
parent::handle();
|
parent::handle();
|
||||||
|
|
||||||
if ($this->boolean('ajax')) {
|
if (StatusNet::isAjax()) {
|
||||||
$this->showAjax();
|
$this->showAjax();
|
||||||
} else {
|
} else {
|
||||||
if ($this->notice->is_local == Notice::REMOTE) {
|
|
||||||
try {
|
|
||||||
$target = $this->notice->getUrl();
|
|
||||||
if ($target != $this->selfUrl()) {
|
|
||||||
common_redirect($target, 301);
|
|
||||||
}
|
|
||||||
} catch (InvalidUrlException $e) {
|
|
||||||
common_debug('ShownoticeAction could not redirect to remote notice with id='.$this->notice->id . '. Falling back to showPage().');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->showPage();
|
$this->showPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,6 +210,11 @@ class Notice extends Managed_DataObject
|
|||||||
return $this->uri;
|
return $this->uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLocalUrl()
|
||||||
|
{
|
||||||
|
return common_local_url('shownotice', array('notice' => $this->id), null, null, false);
|
||||||
|
}
|
||||||
|
|
||||||
public function getUrl()
|
public function getUrl()
|
||||||
{
|
{
|
||||||
// The risk is we start having empty urls and non-http uris...
|
// The risk is we start having empty urls and non-http uris...
|
||||||
|
@ -28,11 +28,7 @@
|
|||||||
* @link http://status.net/
|
* @link http://status.net/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('STATUSNET')) {
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
// This check helps protect against security problems;
|
|
||||||
// your code file can't be executed directly from the web.
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* widget for displaying a single notice
|
* widget for displaying a single notice
|
||||||
@ -354,22 +350,15 @@ class NoticeListItem extends Widget
|
|||||||
/**
|
/**
|
||||||
* show the link to the main page for the notice
|
* show the link to the main page for the notice
|
||||||
*
|
*
|
||||||
* Displays a link to the page for a notice, with "relative" time. Tries to
|
* Displays a local link to the rendered notice, with "relative" time.
|
||||||
* get remote notice URLs correct, but doesn't always succeed.
|
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function showNoticeLink()
|
function showNoticeLink()
|
||||||
{
|
{
|
||||||
$noticeurl = $this->notice->getUrl();
|
|
||||||
|
|
||||||
// above should always return an URL
|
|
||||||
|
|
||||||
assert(!empty($noticeurl));
|
|
||||||
|
|
||||||
$this->out->elementStart('a', array('rel' => 'bookmark',
|
$this->out->elementStart('a', array('rel' => 'bookmark',
|
||||||
'class' => 'timestamp',
|
'class' => 'timestamp',
|
||||||
'href' => $noticeurl));
|
'href' => $this->notice->getLocalUrl()));
|
||||||
$this->out->element('time', array('class' => 'dt-published',
|
$this->out->element('time', array('class' => 'dt-published',
|
||||||
'datetime' => common_date_iso8601($this->notice->created),
|
'datetime' => common_date_iso8601($this->notice->created),
|
||||||
// TRANS: Timestamp title (tooltip text) for NoticeListItem
|
// TRANS: Timestamp title (tooltip text) for NoticeListItem
|
||||||
|
Loading…
Reference in New Issue
Block a user