diff --git a/boot.php b/boot.php
index 3b5da170cb..efa9e4bdfd 100644
--- a/boot.php
+++ b/boot.php
@@ -2669,3 +2669,55 @@ function extract_item_authors($arr,$uid) {
}
return array();
}}
+
+
+if(! function_exists('item_photo_menu')){
+function item_photo_menu($item){
+ $a = get_app();
+
+ if (!isset($a->autors)){
+ $rr = q("SELECT id, network, url FROM contact WHERE uid=%d AND self!=1", intval(local_user()));
+ $authors = array();
+ foreach($rr as $r) $authors[$r['url']]= $r;
+ $a->authors = $authors;
+ }
+
+ $contact_url="";
+ $pm_url="";
+
+ $profile_link = ((strlen($item['author-link'])) ? $item['author-link']."?tab=profile" : $item['url']);
+ $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
+
+ if(strlen($item['author-link'])) {
+ if(link_compare($item['author-link'],$item['url']) && ($item['network'] === 'dfrn') && (! $item['self'])) {
+ $profile_link = $redirect_url;
+ $pm_url = $a->get_baseurl() . '/message/new/' . $item['cid'] ;
+ $contact_url = $item['self']?"":$a->get_baseurl() . '/contacts/' . $item['cid'] ;
+ }
+ elseif(isset($a->authors[$item['author-link']])) {
+ $profile_link = $a->get_baseurl() . '/redir/' . $a->authors[$item['author-link']]['id'];
+ if ($a->authors[$item['author-link']]['network']==='dfrn'){
+ $pm_url = $a->get_baseurl() . '/message/new/' . $a->authors[$item['author-link']]['id'];
+ }
+ $contact_url = $item['self']?"":$a->get_baseurl() . '/contacts/' . $a->authors[$item['author-link']]['id'] ;
+
+ }
+ }
+
+
+ $menu = Array(
+ t("View profile") => $profile_link,
+ t("Edit contact") => $contact_url,
+ t("Send PM") => $pm_url
+ );
+
+ $args = array($item, &$menu);
+
+ call_hooks('item_photo_menu', $args);
+
+ $o = "";
+ foreach($menu as $k=>$v){
+ if ($v!="") $o .= "
$k\n";
+ }
+ return $o;
+}}
diff --git a/mod/network.php b/mod/network.php
index 84efe52ba7..13ce81abc8 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -209,6 +209,7 @@ function network_content(&$a, $update = 0) {
intval($a->pager['start']),
intval($a->pager['itemspage'])
);
+
}
else {
@@ -315,11 +316,12 @@ function network_content(&$a, $update = 0) {
$drop = replace_macros($droptpl,array('$id' => $item['id']));
$lock = '';
-
+
$o .= replace_macros($tpl,array(
'$id' => $item['item_id'],
'$linktitle' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
+ '$item_photo_menu' => item_photo_menu($item),
'$name' => $profile_name,
'$sparkle' => $sparkle,
'$lock' => $lock,
@@ -543,7 +545,6 @@ function network_content(&$a, $update = 0) {
$indent .= ' shiny';
- $contact_url = $a->get_baseurl()."/contacts/".$item['cid'];
// Build the HTML
@@ -555,9 +556,7 @@ function network_content(&$a, $update = 0) {
'$wall' => t('Wall-to-Wall'),
'$vwall' => t('via Wall-To-Wall:'),
'$profile_url' => $profile_link,
- '$profile_tab_url' => $profile_link."?tab=profile", //don't work with secure redirects
- '$contact_url' => $contact_url,
- '$pm_url' => "",
+ '$item_photo_menu' => item_photo_menu($item),
'$name' => $profile_name,
'$thumb' => $profile_avatar,
'$osparkle' => $osparkle,
diff --git a/mod/profile.php b/mod/profile.php
index 17f6a2d451..ab1e8f7384 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -454,10 +454,12 @@ function profile_content(&$a, $update = 0) {
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$indent .= ' shiny';
+
$tmp_item = replace_macros($template,array(
'$id' => $item['item_id'],
'$linktitle' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
+ '$item_photo_menu' => item_photo_menu($item),
'$name' => $profile_name,
'$thumb' => $profile_avatar,
'$sparkle' => $sparkle,
diff --git a/mod/search.php b/mod/search.php
index db7279fb56..64281dfcfb 100644
--- a/mod/search.php
+++ b/mod/search.php
@@ -115,6 +115,7 @@ function search_content(&$a) {
'$id' => $item['item_id'],
'$linktitle' => t('View $name\'s profile'),
'$profile_url' => $profile_link,
+ '$item_photo_menu' => item_photo_menu($item),
'$name' => $profile_name,
'$sparkle' => $sparkle,
'$lock' => $lock,
diff --git a/view/search_item.tpl b/view/search_item.tpl
index f890bdee5e..02c31fe141 100644
--- a/view/search_item.tpl
+++ b/view/search_item.tpl
@@ -1,9 +1,17 @@
-
+
+
+
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css
index ac6ebf8073..3543c3a4d2 100644
--- a/view/theme/duepuntozero/style.css
+++ b/view/theme/duepuntozero/style.css
@@ -882,7 +882,7 @@ input#dfrn-url {
}
.wall-item-photo-menu {
- width: 90px;
+ width: auto;
border: 2px solid #444444;
background: #FFFFFF;
position: absolute;
@@ -892,7 +892,6 @@ input#dfrn-url {
.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none }
.wall-item-photo-menu li a { display: block; padding: 2px; }
.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; }
-.wall-item-photo-menu li a[href=""] { display: none }
.comment .wall-item-photo-menu-button { top: 44px;}
diff --git a/view/wall_item.tpl b/view/wall_item.tpl
index c78fbb61f9..8934832590 100644
--- a/view/wall_item.tpl
+++ b/view/wall_item.tpl
@@ -2,16 +2,15 @@
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+ onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">