diff options
author | cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-12-29 18:16:54 +0000 |
---|---|---|
committer | cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-12-29 18:16:54 +0000 |
commit | 3c083f6c4ff4d354a546e03477e7a4acbb16d4a9 (patch) | |
tree | 961ad1135905070b95a51bc0c6bdbd948754b562 /views | |
parent | 298114995174acf451cc1477fdeec34a42ef608b (diff) | |
download | elgg-3c083f6c4ff4d354a546e03477e7a4acbb16d4a9.tar.gz elgg-3c083f6c4ff4d354a546e03477e7a4acbb16d4a9.tar.bz2 |
rewrote the display of likes
git-svn-id: http://code.elgg.org/elgg/trunk@7748 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'views')
-rw-r--r-- | views/default/annotation/likes.php | 76 | ||||
-rw-r--r-- | views/default/core/likes/display.php | 61 | ||||
-rw-r--r-- | views/default/core/river/controls.php | 24 | ||||
-rw-r--r-- | views/default/css/screen.php | 21 | ||||
-rw-r--r-- | views/default/forms/likes/edit.php | 57 | ||||
-rw-r--r-- | views/default/js/elgg.php | 173 |
6 files changed, 146 insertions, 266 deletions
diff --git a/views/default/annotation/likes.php b/views/default/annotation/likes.php index 3fdf2349b..20965f456 100644 --- a/views/default/annotation/likes.php +++ b/views/default/annotation/likes.php @@ -1,40 +1,48 @@ <?php /** - * Elgg show the user who liked the object + * Elgg show the users who liked the object + * + * @uses $vars['annotation'] */ -$owner = get_user($vars['annotation']->owner_guid); +if (!isset($vars['annotation'])) { + return true; +} -?> -<div class="elgg-likes-user clearfix"> - <div class="entity-listing-icon"> - <?php - echo elgg_view("profile/icon", array( - 'entity' => $owner, - 'size' => 'tiny' - )); - ?> - </div> - - <div class="entity-listing-info"> - <?php - // if the user looking at the like listing can edit, show the delete link - if ($vars['annotation']->canEdit()) { - ?> - <div class="entity-metadata"><span class="delete-button"> - <?php echo elgg_view("output/confirmlink",array( - 'href' => "action/likes/delete?annotation_id=" . $vars['annotation']->id, - 'text' => elgg_echo('remove'), +$like = $vars['annotation']; + +$user = $like->getOwnerEntity(); +if (!$user) { + return true; +} + +$user_icon = elgg_view("profile/icon", array('entity' => $user, 'size' => 'tiny')); +$user_link = elgg_view('output/url', array( + 'href' => $user->getURL(), + 'text' => $user->name, +)); + +$likes_string = elgg_echo('likes:this'); + +$friendlytime = elgg_view_friendly_time($like->time_created); + +if ($like->canEdit()) { + $delete_button = elgg_view("output/confirmlink",array( + 'href' => "action/likes/delete?annotation_id={$like->id}", + 'text' => elgg_echo('delete'), 'confirm' => elgg_echo('deleteconfirm') - )); - ?> - </span></div> - <?php - } //end of can edit if statement - ?> - <p class="elgg-likes-owner"> - <a href="<?php echo $owner->getURL(); ?>"><?php echo $owner->name; ?></a> <?php echo elgg_echo('likes:this') . - " <span class=\"entity-subtext\">" . elgg_view_friendly_time($vars['annotation']->time_created) . "</span>"; ?> - </p> - </div> -</div>
\ No newline at end of file + )); + $delete_button = "<span class=\"delete-button\">$delete_button</span>"; +} + +$body = <<<HTML +<p class="mbn"> + $delete_button + $user_link $likes_string + <span class="elgg-list-subtitle"> + $friendlytime + </span> +</p> +HTML; + +echo elgg_view_image_block($user_icon, $body); diff --git a/views/default/core/likes/display.php b/views/default/core/likes/display.php new file mode 100644 index 000000000..bd0a8fa95 --- /dev/null +++ b/views/default/core/likes/display.php @@ -0,0 +1,61 @@ +<?php +/** + * Elgg likes display + * + * @package Elgg + * + * @uses $vars['entity'] + */ + +if (!isset($vars['entity'])) { + return true; +} + +$guid = $vars['entity']->getGUID(); + +// check to see if the user has already liked this +if (!elgg_annotation_exists($guid, 'likes')) { + $url = elgg_get_site_url() . "action/likes/add?guid={$guid}"; + $params = array( + 'href' => $url, + 'text' => '<span class="elgg-icon elgg-icon-likes"></span>', + 'title' => elgg_echo('likes:likethis'), + 'is_action' => true, + 'encode_text' => false, + ); + $likes_button = elgg_view('output/url', $params); +} else { + $likes = get_annotations($guid, '', '', 'likes', '', get_loggedin_userid()); + $url = elgg_get_site_url() . "action/likes/delete?annotation_id={$likes[0]->id}"; + $params = array( + 'href' => $url, + 'text' => "<span class=\"elgg-icon elgg-icon-liked\"></span>", + 'title' => elgg_echo('likes:remove'), + 'is_action' => true, + 'encode_text' => false, + ); + $likes_button = elgg_view('output/url', $params); +} + +$list = ''; +$num_of_likes = elgg_count_likes($vars['entity']); +if ($num_of_likes) { + // display the number of likes + if ($num_of_likes == 1) { + $likes_string = elgg_echo('likes:userlikedthis'); + } else { + $likes_string = elgg_echo('likes:userslikedthis'); + } + $params = array( + 'text' => "$num_of_likes $likes_string", + 'title' => elgg_echo('likes:see'), + 'class' => 'elgg-like-toggle', + ); + $list = elgg_view('output/url', $params); + $list .= "<div class='elgg-likes-list hidden clearfix'>"; + $list .= list_annotations($guid, 'likes', 99); + $list .= "</div>"; +} + +echo $likes_button; +echo $list; diff --git a/views/default/core/river/controls.php b/views/default/core/river/controls.php index e239a2adb..66fbc5059 100644 --- a/views/default/core/river/controls.php +++ b/views/default/core/river/controls.php @@ -9,7 +9,7 @@ $object = $vars['item']->getObjectEntity(); if (isloggedin()) { - // comments and non-objects cannot be commented on + // comments and non-objects cannot be commented on or liked if ($object->getType() == 'object' && $vars['item']->annotation_id == 0) { $params = array( 'href' => '#', @@ -18,6 +18,26 @@ if (isloggedin()) { 'internalid' => "elgg-toggler-{$object->getGUID()}", ); echo elgg_view('output/url', $params); - //echo elgg_view('forms/likes/link', array('entity' => $object)); + + // like this + if (!elgg_annotation_exists($object->getGUID(), 'likes')) { + $url = "action/likes/add?guid={$object->getGUID()}"; + $params = array( + 'href' => $url, + 'text' => elgg_echo('likes:likethis'), + 'is_action' => true, + ); + echo elgg_view('output/url', $params); + } else { + $likes = get_annotations($guid, '', '', 'likes', '', get_loggedin_userid()); + $url = elgg_get_site_url() . "action/likes/delete?annotation_id={$likes[0]->id}"; + $params = array( + 'href' => $url, + 'text' => elgg_echo('likes:remove'), + 'is_action' => true, + ); + echo elgg_view('output/url', $params); + } } + }
\ No newline at end of file diff --git a/views/default/css/screen.php b/views/default/css/screen.php index 3eb7e93a0..bae0404f7 100644 --- a/views/default/css/screen.php +++ b/views/default/css/screen.php @@ -760,6 +760,27 @@ a.elgg-widget-edit-button:hover, a.elgg-widget-delete-button:hover { /* *************************************** LIKES *************************************** */ +.elgg-likes-list { + background-color: white; + border:1px solid #cccccc; + width: 345px; + height: auto; + position: absolute; + text-align: left; + z-index: 9999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -webkit-box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.5); +} +.elgg-river-item > .elgg-alt a { + font-size: 90%; + float: right; + clear: both; +} + + + .likes-list-holder { position: relative; float:right; diff --git a/views/default/forms/likes/edit.php b/views/default/forms/likes/edit.php deleted file mode 100644 index 93c4ce983..000000000 --- a/views/default/forms/likes/edit.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * Elgg likes add form - * - * @package Elgg - * - * @uses $vars['entity'] - */ - -if (isset($vars['entity']) && isloggedin()) { - $guid = $vars['entity']->getGUID(); - $url = elgg_get_site_url() . "action/likes/add?guid={$guid}"; - - //check to see if the user has already liked - if (!elgg_annotation_exists($guid, 'likes') ) { - $params = array( - 'href' => $url, - 'text' => '<span class="elgg-icon elgg-icon-likes"></span>', - 'title' => elgg_echo('likes:likethis'), - 'is_action' => true, - ); - echo elgg_view('output/url', $params); - $likes_classname = 'elgg-icon-likes'; - $likes_titletag = ""; - } else { - $likes_classname = 'elgg-icon-liked'; - $likes_titletag = elgg_echo('likes:remove'); - } - - //display the number of likes - $numoflikes = elgg_count_likes($vars['entity']); - if ($numoflikes != 0) { - if ($numoflikes == 1) { - $user_string = elgg_echo('likes:userlikedthis'); - } else { - $user_string = elgg_echo('likes:userslikedthis'); - } - - $params = array( - 'href' => $url, - 'text' => "<span class=\"elgg-icon $likes_classname\"></span>" . elgg_count_likes($vars['entity']) . " " . $user_string, - 'title' => $likes_titletag, - 'is_action' => true, - ); - echo elgg_view('output/url', $params); - - //show the users who liked the object - echo "<div class='likes-list hidden clearfix'>"; - echo list_annotations($vars['entity']->getGUID(), 'likes', 99); - echo "</div>"; - } -} - - - - - diff --git a/views/default/js/elgg.php b/views/default/js/elgg.php index 3e7b30a99..f7f1e942c 100644 --- a/views/default/js/elgg.php +++ b/views/default/js/elgg.php @@ -65,86 +65,6 @@ $(function() { $(document).ready(function () { - // COLLAPSABLE WIDGETS (on Dashboard? & Profile pages) - // toggle widget box contents - $('a.toggle_box_contents').bind('click', toggleContent); - - // WIDGET GALLERY EDIT PANEL - // Sortable widgets - var els = ['#leftcolumn_widgets', '#middlecolumn_widgets', '#rightcolumn_widgets', '#widget_picker_gallery' ]; - var $els = $(els.toString()); - - $els.sortable({ - items: '.draggable_widget', - handle: '.drag-handle', - forcePlaceholderSize: true, - placeholder: 'ui-state-highlight', - cursor: 'move', - revert: true, - opacity: 0.9, - appendTo: 'body', - connectWith: els, - start:function(e,ui) { - - }, - stop: function(e,ui) { - // refresh list before updating hidden fields with new widget order - $(this).sortable( "refresh" ); - - var widgetNamesLeft = outputWidgetList('#leftcolumn_widgets'); - var widgetNamesMiddle = outputWidgetList('#middlecolumn_widgets'); - var widgetNamesRight = outputWidgetList('#rightcolumn_widgets'); - - document.getElementById('debugField1').value = widgetNamesLeft; - document.getElementById('debugField2').value = widgetNamesMiddle; - document.getElementById('debugField3').value = widgetNamesRight; - } - }); - - // bind more info buttons - called when new widgets are created - widget_moreinfo(); - - // set-up hover class for dragged widgets - $("#rightcolumn_widgets").droppable({ - accept: ".draggable_widget", - hoverClass: 'droppable-hover' - }); - $("#middlecolumn_widgets").droppable({ - accept: ".draggable_widget", - hoverClass: 'droppable-hover' - }); - $("#leftcolumn_widgets").droppable({ - accept: ".draggable_widget", - hoverClass: 'droppable-hover' - }); - - // user likes - $(".likes-list-button").click(function(event) { - if ($(this).next(".likes-list").css('display') == 'none') { // show list - // hide any other currently viewable likes lists - $('.likes-list').fadeOut(); - - var topPosition = - $(this).next(".likes-list").height(); - topPosition10 = topPosition + 10 + "px"; - topPosition = topPosition - 5 + "px"; - $('.likes-list').css('top',topPosition10); - $('.likes-list').css('left', -$('.likes-list').width()+110); - $(this).next(".likes-list").animate({opacity: "toggle", top: topPosition}, 500); - - // set up cancel for a click outside the likes list - $(document).click(function(event) { - var target = $(event.target); - if (target.parents(".likes-list-holder").length == 0) { - $(".likes-list").fadeOut(); - } - }); - - } else { // hide list - var topPosition = - $(this).next(".likes-list").height() + 5; - $(this).next(".likes-list").animate({opacity: "toggle", top: topPosition}, 500); - } - }); - elgg_system_message(); }); /* end document ready function */ @@ -170,99 +90,6 @@ function elgg_slide_toggle(activateLink, parentElement, toggleElement) { return false; } -// List active widgets for each page column -function outputWidgetList(forElement) { - return( $("input[name='handler'], input[name='guid']", forElement ).makeDelimitedList("value") ); -} - -// Make delimited list -jQuery.fn.makeDelimitedList = function(elementAttribute) { - - var delimitedListArray = new Array(); - var listDelimiter = "::"; - - // Loop over each element in the stack and add the elementAttribute to the array - this.each(function(e) { - var listElement = $(this); - // Add the attribute value to our values array - delimitedListArray[delimitedListArray.length] = listElement.attr(elementAttribute); - } - ); - - // Return value list by joining the array - return(delimitedListArray.join(listDelimiter)); -} - - -// Read each widgets collapsed/expanded state from cookie and apply -function widget_state(forWidget) { - - var thisWidgetState = $.cookie(forWidget); - - if (thisWidgetState == 'collapsed') { - forWidget = "#" + forWidget; - $(forWidget).find("div.collapsable_box_content").hide(); - $(forWidget).find("a.toggle_box_contents").html('+'); - $(forWidget).find("a.toggle_box_edit_panel").fadeOut('medium'); - }; -} - - -// Toggle widgets contents and save to a cookie -var toggleContent = function(e) { -var targetContent = $('div.collapsable_box_content', this.parentNode.parentNode); - if (targetContent.css('display') == 'none') { - targetContent.slideDown(400); - $(this).html('-'); - $(this.parentNode).children(".toggle_box_edit_panel").fadeIn('medium'); - - // set cookie for widget panel open-state - var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id'); - $.cookie(thisWidgetName, 'expanded', { expires: 365 }); - - } else { - targetContent.slideUp(400); - $(this).html('+'); - $(this.parentNode).children(".toggle_box_edit_panel").fadeOut('medium'); - // make sure edit pane is closed - $(this.parentNode.parentNode).children(".collapsable_box_editpanel").hide(); - - // set cookie for widget panel closed-state - var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id'); - $.cookie(thisWidgetName, 'collapsed', { expires: 365 }); - } - return false; -}; - -// More info tooltip in widget gallery edit panel -function widget_moreinfo() { - - $("img.more_info").hover(function(e) { - var widgetdescription = $("input[name='description']", this.parentNode.parentNode.parentNode ).attr('value'); - $("body").append("<p id='widget_moreinfo'><b>"+ widgetdescription +" </b></p>"); - - if (e.pageX < 900) { - $("#widget_moreinfo") - .css("top",(e.pageY + 10) + "px") - .css("left",(e.pageX + 10) + "px") - .fadeIn("medium"); - } - else { - $("#widget_moreinfo") - .css("top",(e.pageY + 10) + "px") - .css("left",(e.pageX - 210) + "px") - .fadeIn("medium"); - } - }, - function() { - $("#widget_moreinfo").remove(); - }); - - $("img.more_info").mousemove(function(e) { - // action on mousemove - }); -}; - // ELGG DROP DOWN MENU $.fn.elgg_dropdownmenu = function(options) { |