diff options
Diffstat (limited to 'mod/groups/views/default/object/groupforumtopic.php')
| -rw-r--r-- | mod/groups/views/default/object/groupforumtopic.php | 166 |
1 files changed, 98 insertions, 68 deletions
diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php index 5fb1dad0b..e6988d16e 100644 --- a/mod/groups/views/default/object/groupforumtopic.php +++ b/mod/groups/views/default/object/groupforumtopic.php @@ -1,71 +1,101 @@ <?php +/** + * Forum topic entity view + * + * @package ElggGroups +*/ - /** - * Elgg Groups latest discussion listing - * - * @package ElggGroups - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider <info@elgg.com> - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ - - //get the required variables - $title = htmlentities($vars['entity']->title, ENT_QUOTES, 'UTF-8'); - //$description = get_entity($vars['entity']->description); - $topic_owner = get_user($vars['entity']->owner_guid); - $group = get_entity($vars['entity']->container_guid); - $forum_created = friendly_time($vars['entity']->time_created); - $counter = $vars['entity']->countAnnotations("group_topic_post"); - $last_post = $vars['entity']->getAnnotations("group_topic_post", 1, 0, "desc"); - - //get the time and user - if ($last_post) { - foreach($last_post as $last) { - $last_time = $last->time_created; - $last_user = $last->owner_guid; - } - } - - $u = get_user($last_user); - - //select the correct output depending on where you are - if(get_context() == "search"){ +$full = elgg_extract('full_view', $vars, FALSE); +$topic = elgg_extract('entity', $vars, FALSE); + +if (!$topic) { + return true; +} + +$poster = $topic->getOwnerEntity(); +$group = $topic->getContainerEntity(); +$excerpt = elgg_get_excerpt($topic->description); + +$poster_icon = elgg_view_entity_icon($poster, 'tiny'); +$poster_link = elgg_view('output/url', array( + 'href' => $poster->getURL(), + 'text' => $poster->name, + 'is_trusted' => true, +)); +$poster_text = elgg_echo('groups:started', array($poster->name)); + +$tags = elgg_view('output/tags', array('tags' => $topic->tags)); +$date = elgg_view_friendly_time($topic->time_created); + +$replies_link = ''; +$reply_text = ''; +$num_replies = elgg_get_annotations(array( + 'annotation_name' => 'group_topic_post', + 'guid' => $topic->getGUID(), + 'count' => true, +)); +if ($num_replies != 0) { + $last_reply = $topic->getAnnotations('group_topic_post', 1, 0, 'desc'); + $poster = $last_reply[0]->getOwnerEntity(); + $reply_time = elgg_view_friendly_time($last_reply[0]->time_created); + $reply_text = elgg_echo('groups:updated', array($poster->name, $reply_time)); - $info = "<p class='entity_subtext groups'>" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . "<br />"; - if (($last_time) && ($u)) $info.= sprintf(elgg_echo('groups:lastupdated'), friendly_time($last_time), " <a href=\"" . $u->getURL() . "\">" . $u->name . "</a>"); - $info .= '</p>'; - //get the group avatar - $icon = elgg_view("profile/icon",array('entity' => $group, 'size' => 'tiny')); - //get the group and topic title - if ($group instanceof ElggGroup) { - $info .= "<p class='entity_title'>" . elgg_echo('group') . ": <a href=\"{$group->getURL()}\">".htmlentities($group->name, ENT_QUOTES, 'UTF-8') ."</a></p>"; - } - $info .= "<p class='entity_subtext'>" . elgg_echo('topic') . ": <a href=\"{$vars['url']}mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$group->guid}\">{$title}</a></p>"; - - }else{ - - $info = "<p class='entity_subtext groups'>" . sprintf(elgg_echo('group:created'), $forum_created, $counter) . "</p>"; - $info .= "<p class='entity_title'>" . elgg_echo('groups:started') . " " . $topic_owner->name . ": <a href=\"{$vars['url']}mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$group->guid}\">{$title}</a></p>"; - - if (groups_can_edit_discussion($vars['entity'], page_owner_entity()->owner_guid)) { - // display the delete link to those allowed to delete - $info .= "<div class='delete_button'>" . elgg_view("output/confirmlink", array( - 'href' => $vars['url'] . "action/groups/deletetopic?topic=" . $vars['entity']->guid . "&group=" . $vars['entity']->container_guid, - 'text' => " ", - 'confirm' => elgg_echo('deleteconfirm'), - )) . "</div>"; - - } - - if (($last_time) && ($u)) { - $info.= "<p class='entity_subtext'>" . elgg_echo('groups:updated') . " " . friendly_time($last_time) . " by <a href=\"" . $u->getURL() . "\">" . $u->name . "</a></p>"; - } - //get the user avatar - $icon = elgg_view("profile/icon",array('entity' => $topic_owner, 'size' => 'tiny')); - } - - //display - echo elgg_view_listing($icon, $info); - -?>
\ No newline at end of file + $replies_link = elgg_view('output/url', array( + 'href' => $topic->getURL() . '#group-replies', + 'text' => elgg_echo('group:replies') . " ($num_replies)", + 'is_trusted' => true, + )); +} + +$metadata = elgg_view_menu('entity', array( + 'entity' => $vars['entity'], + 'handler' => 'discussion', + 'sort_by' => 'priority', + 'class' => 'elgg-menu-hz', +)); + +// do not show the metadata and controls in widget view +if (elgg_in_context('widgets')) { + $metadata = ''; +} + +if ($full) { + $subtitle = "$poster_text $date $replies_link"; + + $params = array( + 'entity' => $topic, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => $tags, + ); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); + + $info = elgg_view_image_block($poster_icon, $list_body); + + $body = elgg_view('output/longtext', array( + 'value' => $topic->description, + 'class' => 'clearfix', + )); + + echo <<<HTML +$info +$body +HTML; + +} else { + // brief view + $subtitle = "$poster_text $date $replies_link <span class=\"groups-latest-reply\">$reply_text</span>"; + + $params = array( + 'entity' => $topic, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => $tags, + 'content' => $excerpt, + ); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); + + echo elgg_view_image_block($poster_icon, $list_body); +} |
