From 9456cf380a51d4863dd0ee96499763bb32f54284 Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 10 Mar 2010 16:32:05 +0000 Subject: the beginnings of a new activity river with ajax notification and conversation clustering. git-svn-id: http://code.elgg.org/elgg/trunk@5344 36083f99-b078-4883-b0ff-0f9b5a30f544 --- .../views/default/river/dashboard.php | 19 ++++ .../views/default/river/item/list.php | 59 ++++++++++ .../views/default/river/item/wrapper.php | 119 +++++++++++++++++++++ .../default/river/relationship/friend/create.php | 36 +++++++ .../views/default/river/sitemessage/create.php | 18 ---- 5 files changed, 233 insertions(+), 18 deletions(-) create mode 100644 mod/riverdashboard/views/default/river/dashboard.php create mode 100644 mod/riverdashboard/views/default/river/item/list.php create mode 100644 mod/riverdashboard/views/default/river/item/wrapper.php create mode 100644 mod/riverdashboard/views/default/river/relationship/friend/create.php delete mode 100644 mod/riverdashboard/views/default/river/sitemessage/create.php (limited to 'mod/riverdashboard/views/default/river') diff --git a/mod/riverdashboard/views/default/river/dashboard.php b/mod/riverdashboard/views/default/river/dashboard.php new file mode 100644 index 000000000..5fe7c35d3 --- /dev/null +++ b/mod/riverdashboard/views/default/river/dashboard.php @@ -0,0 +1,19 @@ + +
+0)) { + foreach ($river as $r) { + echo $r; + } +} else { + echo elgg_echo('river:widget:noactivity'); +} +?> +
\ No newline at end of file diff --git a/mod/riverdashboard/views/default/river/item/list.php b/mod/riverdashboard/views/default/river/item/list.php new file mode 100644 index 000000000..25774ff08 --- /dev/null +++ b/mod/riverdashboard/views/default/river/item/list.php @@ -0,0 +1,59 @@ + +
+= $vars['limit']) { + break; + } + } + } + } + + if ($vars['pagination'] !== false) { + $baseurl = $_SERVER['REQUEST_URI']; + $baseurl = $baseurl = preg_replace('/[\&\?]offset\=[0-9]*/',"",$baseurl); + + $nav = ''; + + if (sizeof($vars['items']) > $vars['limit']) { + $newoffset = $vars['offset'] + $vars['limit']; + $urladdition = 'offset='.$newoffset; + if (substr_count($baseurl,'?')) { + $nexturl = $baseurl . '&' . $urladdition; + } else { + $nexturl=$baseurl . '?' . $urladdition; + } + + $nav .= '« ' . elgg_echo('previous') . ' '; + } + + if ($vars['offset'] > 0) { + $newoffset = $vars['offset'] - $vars['limit']; + if ($newoffset < 0) { + $newoffset = 0; + } + $urladdition = 'offset='.$newoffset; + if (substr_count($baseurl,'?')) { + $prevurl=$baseurl . '&' . $urladdition; + } else { + $prevurl=$baseurl . '?' . $urladdition; + } + + $nav .= '' . elgg_echo('next') . ' » '; + } + + if (!empty($nav)) { + echo '

'.$nav.'

'; + } + } +?> +
\ No newline at end of file diff --git a/mod/riverdashboard/views/default/river/item/wrapper.php b/mod/riverdashboard/views/default/river/item/wrapper.php new file mode 100644 index 000000000..1aa508d99 --- /dev/null +++ b/mod/riverdashboard/views/default/river/item/wrapper.php @@ -0,0 +1,119 @@ +object_guid); +//get object url +$object_url = $object->getURL(); +//user +//if displaying on the profile get the object owner, else the subject_guid +if(get_context() == 'profile' && $object->getSubtype() == 'thewire') + $user = get_entity($object->owner_guid); +else + $user = get_entity($vars['item']->subject_guid); + +//get the right annotation type +//*todo - use the same for comments, everywhere e.g. comment +switch($vars['item']->subtype){ + case 'thewire': + $annotation_comment = 'wire_reply'; + break; + default: + $annotation_comment = 'generic_comment'; + break; +} + +//count comment annotations +$comment_count = count_annotations($vars['item']->object_guid, $vars['item']->type, $vars['item']->subtype, $annotation_comment); + +//count like annotations +$likes = count_annotations($vars['item']->object_guid, $vars['item']->type, $vars['item']->subtype, "likes"); + +//get last two comments display +$get_comments = get_annotations($vars['item']->object_guid, "", "", $annotation_comment, "", "", 3, 0, "desc"); + +if($get_comments){ + //reverse the array so we can display comments in the right order + $get_comments = array_reverse($get_comments); +} + +//minus two off the comment total as we display two by default +if($comment_count < 3) + $num_comments = 0; +else + $num_comments = $comment_count - 3; +?> +
+ + + $user, 'size' => 'small')); + ?> + + + +
+ +
+ "; + //set the correct context comment or comments + if($num_comments == 1) + echo "+{$num_comments} more comment"; + else + echo "+{$num_comments} more comments"; + + echo "
"; + } + //display latest 2 comments if there are any + if($get_comments){ + $counter = 0; + $background = ""; + echo "
"; + foreach($get_comments as $gc){ + //get the comment owner + $comment_owner = get_user($gc->owner_guid); + //get the comment owner's profile url + $comment_owner_url = $comment_owner->getURL(); + // color-code each of the 3 comments + if( ($counter == 2 && $comment_count >= 4) || ($counter == 1 && $comment_count == 2) || ($counter == 0 && $comment_count == 1) || ($counter == 2 && $comment_count == 3) ) + $alt = 'latest'; + else if( ($counter == 1 && $comment_count >= 4) || ($counter == 0 && $comment_count == 2) || ($counter == 1 && $comment_count == 3) ) + $alt = 'penultimate'; + + //display comment + echo "
"; + echo "
"; + echo elgg_view("profile/icon",array('entity' => $comment_owner, 'size' => 'tiny')); + echo "
"; + //truncate comment to 150 characters + if(strlen($gc->value) > 150) { + $gc->value = substr($gc->value, 0, strpos($gc->value, ' ', 150)) . "..."; + } + $contents = strip_tags($gc->value); + echo "
"; + echo "" . $comment_owner->name . " " . parse_urls($contents); + echo "
" . friendly_time($gc->time_created) . ""; + echo "
"; + echo "
"; + $counter++; + } + echo "
"; + } + //display the comment link + if($vars['item']->type != 'user'){ + //for now don't display the comment link on bookmarks and wire messages + if($vars['item']->subtype != 'thewire' && $vars['item']->subtype != 'bookmarks' && $vars['item']->subtype != '') + echo "Comment"; + } + ?> +
+
+ \ No newline at end of file diff --git a/mod/riverdashboard/views/default/river/relationship/friend/create.php b/mod/riverdashboard/views/default/river/relationship/friend/create.php new file mode 100644 index 000000000..916efd407 --- /dev/null +++ b/mod/riverdashboard/views/default/river/relationship/friend/create.php @@ -0,0 +1,36 @@ +getSubject(); +$event = $statement->getEvent(); +$object = $statement->getObject(); + +if (is_array($object)) { + switch ($object['relationship']) { + // Friending + case 'friend' : + case 'friends' : // 'friends' shouldn't be used, but just incase :) + + // Get second object + $userb = $object['object']; + + // Only users can be friends + if (($performed_by instanceof ElggUser) && ($userb instanceof ElggUser)) { + // User A + echo "getURL()}\">{$performed_by->name} "; + + // Verb + echo elgg_echo('river:relationship:friend'); + + // user B + echo " getURL()}\">{$userb->name}"; + } + + break; + } +} \ No newline at end of file diff --git a/mod/riverdashboard/views/default/river/sitemessage/create.php b/mod/riverdashboard/views/default/river/sitemessage/create.php deleted file mode 100644 index eaceb1a2e..000000000 --- a/mod/riverdashboard/views/default/river/sitemessage/create.php +++ /dev/null @@ -1,18 +0,0 @@ -subject_guid); // $statement->getSubject(); - $object = get_entity($vars['item']->object_guid); - $url = $object->getURL(); - - $url = "getURL()}\">{$performed_by->name}"; - $string = sprintf(elgg_echo("sitemessages:river:created"),$url) . " "; - $string .= elgg_echo("sitemessages:river:create"); - $string .= "
"; - $string .= $object->description; - $string .= "
"; - -?> - - \ No newline at end of file -- cgit v1.2.3