From fe67c346e5ed9f65fe25dd9337b6424c04d09c4a Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 31 Mar 2011 16:52:51 +0200 Subject: [PATCH] Moved popup logic in boot.php, added 'item_photo_menu' hook --- boot.php | 52 +++++++++++++++++++++++++++++++ mod/network.php | 9 +++--- mod/profile.php | 2 ++ mod/search.php | 1 + view/search_item.tpl | 10 +++++- view/theme/duepuntozero/style.css | 3 +- view/wall_item.tpl | 7 ++--- 7 files changed, 72 insertions(+), 12 deletions(-) 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 @@
    -
    +
    $name + menu +
    +
      + $item_photo_menu +
    +
    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)"> $name menu