X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fshowstream.php;h=28bb8453f8c1111dd04a44b9fcff947273fd146b;hb=28ef2ccf427683837dde29f8b89ea8d5378f287b;hp=f9b58a82fc73508784df887fce4cfbdac3020edb;hpb=ed9cb94ff3f95b1aa728584c887f5eefc1375201;p=quix0rs-gnu-social.git diff --git a/actions/showstream.php b/actions/showstream.php index f9b58a82fc..28bb8453f8 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -35,6 +35,7 @@ if (!defined('LACONICA')) { require_once INSTALLDIR.'/lib/personalgroupnav.php'; require_once INSTALLDIR.'/lib/noticelist.php'; require_once INSTALLDIR.'/lib/profileminilist.php'; +require_once INSTALLDIR.'/lib/groupminilist.php'; require_once INSTALLDIR.'/lib/feedlist.php'; /** @@ -59,6 +60,11 @@ class ShowstreamAction extends Action var $page = null; var $profile = null; + function isReadOnly() + { + return true; + } + function title() { if ($this->page == 1) { @@ -104,6 +110,8 @@ class ShowstreamAction extends Action $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; + common_set_returnto($this->selfUrl()); + return true; } @@ -134,7 +142,12 @@ class ShowstreamAction extends Action function showPageTitle() { - $this->element('h1', NULL, $this->profile->nickname._("'s profile")); + $user =& common_current_user(); + if ($user && ($user->id == $this->profile->id)) { + $this->element('h1', NULL, _("Your profile")); + } else { + $this->element('h1', NULL, sprintf(_('%s\'s profile'), $this->profile->nickname)); + } } function showPageNoticeBlock() @@ -164,26 +177,22 @@ class ShowstreamAction extends Action function showFeeds() { - // Feeds - $this->element('link', array('rel' => 'alternate', - 'href' => common_local_url('api', - array('apiaction' => 'statuses', - 'method' => 'user_timeline.rss', - 'argument' => $this->user->nickname)), - 'type' => 'application/rss+xml', - 'title' => sprintf(_('Notice feed for %s'), $this->user->nickname))); - $this->element('link', array('rel' => 'alternate feed', - 'href' => common_local_url('api', - array('apiaction' => 'statuses', - 'method' => 'user_timeline.atom', - 'argument' => $this->user->nickname)), - 'type' => 'application/atom+xml', - 'title' => sprintf(_('Notice feed for %s'), $this->user->nickname))); $this->element('link', array('rel' => 'alternate', - 'href' => common_local_url('userrss', array('nickname' => - $this->user->nickname)), - 'type' => 'application/rdf+xml', - 'title' => sprintf(_('Notice feed for %s'), $this->user->nickname))); + 'type' => 'application/rss+xml', + 'href' => common_local_url('userrss', + array('nickname' => $this->user->nickname)), + 'title' => sprintf(_('Notice feed for %s (RSS)'), + $this->user->nickname))); + + $this->element('link', + array('rel' => 'alternate', + 'href' => common_local_url('api', + array('apiaction' => 'statuses', + 'method' => 'user_timeline.atom', + 'argument' => $this->user->nickname)), + 'type' => 'application/atom+xml', + 'title' => sprintf(_('Notice feed for %s (Atom)'), + $this->user->nickname))); } function extraHead() @@ -226,14 +235,14 @@ class ShowstreamAction extends Action function showProfile() { - $this->elementStart('div', array('id' => 'user_profile', 'class' => 'vcard author')); + $this->elementStart('div', 'entity_profile vcard author'); $this->element('h2', null, _('User profile')); $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE); - $this->elementStart('dl', 'user_depiction'); + $this->elementStart('dl', 'entity_depiction'); $this->element('dt', null, _('Photo')); $this->elementStart('dd'); - $this->element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE), + $this->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_PROFILE_SIZE), 'class' => 'photo avatar', 'width' => AVATAR_PROFILE_SIZE, 'height' => AVATAR_PROFILE_SIZE, @@ -241,7 +250,7 @@ class ShowstreamAction extends Action $this->elementEnd('dd'); $this->elementEnd('dl'); - $this->elementStart('dl', 'user_nickname'); + $this->elementStart('dl', 'entity_nickname'); $this->element('dt', null, _('Nickname')); $this->elementStart('dd'); $hasFN = ($this->profile->fullname) ? 'nickname url uid' : 'fn nickname url uid'; @@ -252,7 +261,7 @@ class ShowstreamAction extends Action $this->elementEnd('dl'); if ($this->profile->fullname) { - $this->elementStart('dl', 'user_fn'); + $this->elementStart('dl', 'entity_fn'); $this->element('dt', null, _('Full name')); $this->elementStart('dd'); $this->element('span', 'fn', $this->profile->fullname); @@ -261,14 +270,14 @@ class ShowstreamAction extends Action } if ($this->profile->location) { - $this->elementStart('dl', 'user_location'); + $this->elementStart('dl', 'entity_location'); $this->element('dt', null, _('Location')); $this->element('dd', 'location', $this->profile->location); $this->elementEnd('dl'); } if ($this->profile->homepage) { - $this->elementStart('dl', 'user_url'); + $this->elementStart('dl', 'entity_url'); $this->element('dt', null, _('URL')); $this->elementStart('dd'); $this->element('a', array('href' => $this->profile->homepage, @@ -279,7 +288,7 @@ class ShowstreamAction extends Action } if ($this->profile->bio) { - $this->elementStart('dl', 'user_note'); + $this->elementStart('dl', 'entity_note'); $this->element('dt', null, _('Note')); $this->element('dd', 'note', $this->profile->bio); $this->elementEnd('dl'); @@ -287,7 +296,7 @@ class ShowstreamAction extends Action $tags = Profile_tag::getTags($this->profile->id, $this->profile->id); if (count($tags) > 0) { - $this->elementStart('dl', 'user_tags'); + $this->elementStart('dl', 'entity_tags'); $this->element('dt', null, _('Tags')); $this->elementStart('dd'); $this->elementStart('ul', 'tags xoxo'); @@ -306,13 +315,22 @@ class ShowstreamAction extends Action } $this->elementEnd('div'); - $this->elementStart('div', array('id' => 'user_actions')); + $this->elementStart('div', 'entity_actions'); $this->element('h2', null, _('User actions')); $this->elementStart('ul'); - $this->elementStart('li', array('id' => 'user_subscribe')); $cur = common_current_user(); + + if ($cur && $cur->id == $this->profile->id) { + $this->elementStart('li', 'entity_edit'); + $this->element('a', array('href' => common_local_url('profilesettings'), + 'title' => _('Edit profile settings')), + _('Edit')); + $this->elementEnd('li'); + } + if ($cur) { if ($cur->id != $this->profile->id) { + $this->elementStart('li', 'entity_subscribe'); if ($cur->isSubscribed($this->profile)) { $usf = new UnsubscribeForm($this, $this->profile); $usf->show(); @@ -320,24 +338,24 @@ class ShowstreamAction extends Action $sf = new SubscribeForm($this, $this->profile); $sf->show(); } + $this->elementEnd('li'); } } else { + $this->elementStart('li', 'entity_subscribe'); $this->showRemoteSubscribeLink(); + $this->elementEnd('li'); } - $this->elementEnd('li'); - -// common_profile_new_message_nudge($cur, $this->user, $this->profile); $user = User::staticGet('id', $this->profile->id); if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) { - $this->elementStart('li', array('id' => 'user_send-a-message')); + $this->elementStart('li', 'entity_send-a-message'); $this->element('a', array('href' => common_local_url('newmessage', array('to' => $user->id)), 'title' => _('Send a direct message to this user')), _('Message')); $this->elementEnd('li'); if ($user->email && $user->emailnotifynudge) { - $this->elementStart('li', array('id' => 'user_nudge')); + $this->elementStart('li', 'entity_nudge'); $nf = new NudgeForm($this, $user); $nf->show(); $this->elementEnd('li'); @@ -346,7 +364,7 @@ class ShowstreamAction extends Action if ($cur && $cur->id != $this->profile->id) { $blocked = $cur->hasBlocked($this->profile); - $this->elementStart('li', array('id' => 'user_block')); + $this->elementStart('li', 'entity_block'); if ($blocked) { $ubf = new UnblockForm($this, $this->profile); $ubf->show(); @@ -365,7 +383,7 @@ class ShowstreamAction extends Action $url = common_local_url('remotesubscribe', array('nickname' => $this->profile->nickname)); $this->element('a', array('href' => $url, - 'id' => 'user_subscribe_remote'), + 'class' => 'entity_remote_subscribe'), _('Subscribe')); } @@ -382,16 +400,19 @@ class ShowstreamAction extends Action function showSections() { - $this->showStatistics(); $this->showSubscriptions(); $this->showSubscribers(); + $this->showGroups(); + $this->showStatistics(); + $cloud = new PersonalTagCloudSection($this, $this->user); + $cloud->show(); } function showSubscriptions() { $profile = $this->user->getSubscriptions(0, PROFILES_PER_MINILIST + 1); - $this->elementStart('div', array('id' => 'user_subscriptions', + $this->elementStart('div', array('id' => 'entity_subscriptions', 'class' => 'section')); $this->element('h2', null, _('Subscriptions')); @@ -408,7 +429,7 @@ class ShowstreamAction extends Action $this->elementStart('p'); $this->element('a', array('href' => common_local_url('subscriptions', array('nickname' => $this->profile->nickname)), - 'class' => 'mores'), + 'class' => 'more'), _('All subscriptions')); $this->elementEnd('p'); } @@ -420,7 +441,7 @@ class ShowstreamAction extends Action { $profile = $this->user->getSubscribers(0, PROFILES_PER_MINILIST + 1); - $this->elementStart('div', array('id' => 'user_subscribers', + $this->elementStart('div', array('id' => 'entity_subscribers', 'class' => 'section')); $this->element('h2', null, _('Subscribers')); @@ -437,7 +458,7 @@ class ShowstreamAction extends Action $this->elementStart('p'); $this->element('a', array('href' => common_local_url('subscribers', array('nickname' => $this->profile->nickname)), - 'class' => 'mores'), + 'class' => 'more'), _('All subscribers')); $this->elementEnd('p'); } @@ -460,19 +481,19 @@ class ShowstreamAction extends Action $notices->profile_id = $this->profile->id; $notice_count = (int) $notices->count(); - $this->elementStart('div', array('id' => 'user_statistics', + $this->elementStart('div', array('id' => 'entity_statistics', 'class' => 'section')); $this->element('h2', null, _('Statistics')); // Other stats...? - $this->elementStart('dl', 'user_member-since'); + $this->elementStart('dl', 'entity_member-since'); $this->element('dt', null, _('Member since')); $this->element('dd', null, date('j M Y', strtotime($this->profile->created))); $this->elementEnd('dl'); - $this->elementStart('dl', 'user_subscriptions'); + $this->elementStart('dl', 'entity_subscriptions'); $this->elementStart('dt'); $this->element('a', array('href' => common_local_url('subscriptions', array('nickname' => $this->profile->nickname))), @@ -481,7 +502,7 @@ class ShowstreamAction extends Action $this->element('dd', null, (is_int($subs_count)) ? $subs_count : '0'); $this->elementEnd('dl'); - $this->elementStart('dl', 'user_subscribers'); + $this->elementStart('dl', 'entity_subscribers'); $this->elementStart('dt'); $this->element('a', array('href' => common_local_url('subscribers', array('nickname' => $this->profile->nickname))), @@ -490,13 +511,54 @@ class ShowstreamAction extends Action $this->element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0'); $this->elementEnd('dl'); - $this->elementStart('dl', 'user_notices'); + $this->elementStart('dl', 'entity_notices'); $this->element('dt', null, _('Notices')); $this->element('dd', null, (is_int($notice_count)) ? $notice_count : '0'); $this->elementEnd('dl'); $this->elementEnd('div'); } + + function showGroups() + { + $groups = $this->user->getGroups(0, GROUPS_PER_MINILIST + 1); + + $this->elementStart('div', array('id' => 'entity_groups', + 'class' => 'section')); + + $this->element('h2', null, _('Groups')); + + if ($groups) { + $gml = new GroupMiniList($groups, $this->user, $this); + $cnt = $gml->show(); + if ($cnt == 0) { + $this->element('p', null, _('(None)')); + } + } + + if ($cnt > GROUPS_PER_MINILIST) { + $this->elementStart('p'); + $this->element('a', array('href' => common_local_url('usergroups', + array('nickname' => $this->profile->nickname)), + 'class' => 'more'), + _('All groups')); + $this->elementEnd('p'); + } + + $this->elementEnd('div'); + } + + function showAnonymousMessage() + { + $m = sprintf(_('**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . + 'based on the Free Software [Laconica](http://laconi.ca/) tool. ' . + '[Join now](%%%%action.register%%%%) to follow **%s**\'s notices and many more! ([Read more](%%%%doc.help%%%%))'), + $this->user->nickname, $this->user->nickname); + $this->elementStart('div', array('id' => 'anon_notice')); + $this->raw(common_markup_to_html($m)); + $this->elementEnd('div'); + } + } // We don't show the author for a profile, since we already know who it is!