From 4c94f8809f1131e2d8e073518195b6b65b26aceb Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 27 Dec 2010 14:20:22 +0000 Subject: improved menu creation for on demand menus and integrated hover menu items into profile owner block git-svn-id: http://code.elgg.org/elgg/trunk@7724 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/blog/start.php | 6 +- mod/bookmarks/start.php | 6 +- mod/file/start.php | 6 +- mod/logbrowser/start.php | 6 +- mod/messages/start.php | 14 ++-- mod/pages/start.php | 6 +- mod/profile/views/default/profile/css.php | 100 +++++++---------------- mod/profile/views/default/profile/ownerblock.php | 85 +++++++++---------- 8 files changed, 99 insertions(+), 130 deletions(-) (limited to 'mod') diff --git a/mod/blog/start.php b/mod/blog/start.php index f3cd31770..1c0cc8b21 100644 --- a/mod/blog/start.php +++ b/mod/blog/start.php @@ -229,14 +229,16 @@ function blog_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/blog/owner/{$params['entity']->username}"; $item = new ElggMenuItem('blog', elgg_echo('blog'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } else { if ($params['entity']->blog_enable != "no") { $url = "pg/blog/group/{$params['entity']->guid}/owner"; $item = new ElggMenuItem('blog', elgg_echo('blog:group'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } } + + return $return; } /** diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php index 062193517..8550878b6 100644 --- a/mod/bookmarks/start.php +++ b/mod/bookmarks/start.php @@ -321,14 +321,16 @@ function bookmarks_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/bookmarks/owner/{$params['user']->username}"; $item = new ElggMenuItem('bookmarks', elgg_echo('bookmarks'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } else { if ($params['entity']->bookmarks_enable != "no") { $url = "pg/bookmarks/owner/{$params['entity']->username}"; $item = new ElggMenuItem('bookmarks', elgg_echo('bookmarks:group'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } } + + return $return; } /** diff --git a/mod/file/start.php b/mod/file/start.php index bb291680e..3376befeb 100644 --- a/mod/file/start.php +++ b/mod/file/start.php @@ -147,14 +147,16 @@ function file_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/file/owner/{$params['entity']->username}"; $item = new ElggMenuItem('file', elgg_echo('file'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } else { if ($params['entity']->file_enable != "no") { $url = "pg/file/owner/{$params['entity']->username}"; $item = new ElggMenuItem('file', elgg_echo('file:group'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } } + + return $return; } /** diff --git a/mod/logbrowser/start.php b/mod/logbrowser/start.php index 62beafe87..dd3c24bee 100644 --- a/mod/logbrowser/start.php +++ b/mod/logbrowser/start.php @@ -23,10 +23,12 @@ function logbrowser_init() { * Add to the user hover menu */ function logbrowser_user_hover_menu($hook, $type, $return, $params) { - $user = $params['user']; + $user = $params['entity']; $url = "pg/admin/overview/logbrowser/?user_guid={$user->guid}"; $item = new ElggMenuItem('logbrowser', elgg_echo('logbrowser:explore'), $url); $item->setSection('admin'); - elgg_register_menu_item('user_hover', $item); + $return[] = $item; + + return $return; } diff --git a/mod/messages/start.php b/mod/messages/start.php index 861f219b2..e8f5105b2 100644 --- a/mod/messages/start.php +++ b/mod/messages/start.php @@ -311,12 +311,16 @@ function messages_site_notify_handler(ElggEntity $from, ElggUser $to, $subject, * Add to the user hover menu */ function messages_user_hover_menu($hook, $type, $return, $params) { - $user = $params['user']; + $user = $params['entity']; - $url = "mod/messages/send.php?send_to={$user->guid}"; - $item = new ElggMenuItem('logbrowser', elgg_echo('messages:sendmessage'), $url); - $item->setSection('action'); - elgg_register_menu_item('user_hover', $item); + if (isloggedin() && get_loggedin_userid() != $user->guid) { + $url = "mod/messages/send.php?send_to={$user->guid}"; + $item = new ElggMenuItem('send', elgg_echo('messages:sendmessage'), $url); + $item->setSection('action'); + $return[] = $item; + } + + return $return; } diff --git a/mod/pages/start.php b/mod/pages/start.php index ebf102be0..1c8290327 100644 --- a/mod/pages/start.php +++ b/mod/pages/start.php @@ -83,14 +83,16 @@ function pages_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/pages/owner/{$params['entity']->username}"; $item = new ElggMenuItem('pages', elgg_echo('pages'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } else { if ($params['entity']->pages_enable != "no") { $url = "pg/pages/owned/group:{$vars['entity']->guid}"; $item = new ElggMenuItem('pages', elgg_echo('pages:group'), $url); - elgg_register_menu_item('owner_block', $item); + $return[] = $item; } } + + return $return; } /** diff --git a/mod/profile/views/default/profile/css.php b/mod/profile/views/default/profile/css.php index 754276c69..1d1f1ccb1 100644 --- a/mod/profile/views/default/profile/css.php +++ b/mod/profile/views/default/profile/css.php @@ -29,98 +29,60 @@ /* *************************************** ownerblock in sidebar *************************************** */ -#profile-sidebar #owner_block { +#profile-owner-block { background-color: #eeeeee; - padding:15px; + padding: 15px; } -#owner_block .owner_block_icon.large { +.owner_block_icon { overflow: hidden; + margin-bottom: 10px; } -#owner_block .profile_actions { - margin-top:10px; -} -#owner_block .profile_actions a.elgg-action-button { - margin-bottom:4px; +#profile-owner-block a.elgg-action-button { + margin-bottom: 4px; display: table; } -/* ownerblock links to owners tools */ -#owner_block .owners_content_links { - border-top:1px dotted #cccccc; - margin-top:4px; - padding-top:2px; -} -#owner_block .owners_content_links ul { - margin:0; - padding:0; -} -#owner_block .owners_content_links ul li { - display:block; - float:left; - width:95px; - font-size: 90%; -} -/* profile pages - ownerblock links to owners tools */ -.owner_block_links { - margin-top:5px; -} -.owner_block_links ul { - margin:0; - padding:0; - list-style: none; -} -.owner_block_links ul li.selected a { - background: #4690D6; - color:white; -} -.owner_block_links ul li a { - display:block; - -webkit-border-radius: 8px; +.profile-content-menu a { + display: block; + -webkit-border-radius: 8px; -moz-border-radius: 8px; - background-color:white; - margin:3px 0 5px 0; - padding:2px 4px 2px 8px; + background-color: white; + margin: 3px 0 5px 0; + padding: 2px 4px 2px 8px; } -.owner_block_links ul li a:hover { - background:#0054A7; - color:white; - text-decoration:none; +.profile-content-menu a:hover { + background: #0054A7; + color: white; + text-decoration: none; } - /* *************************************** admin menu in sidebar *************************************** */ -.owner_block_links .admin_menu_options { +.profile-admin-menu { display: none; } -.owner_block_links ul.admin_menu { - background-color:white; +.profile-admin-menu-wrapper a { + display: block; -webkit-border-radius: 8px; -moz-border-radius: 8px; - cursor:pointer; -} -.owner_block_links ul.admin_menu li a { background-color: white; - color:red; - margin-bottom:0; + margin: 3px 0 5px 0; + padding: 2px 4px 2px 8px; } -.owner_block_links ul.admin_menu li a:hover { - color:black; +.profile-admin-menu-wrapper { + background-color: white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; } -.owner_block_links ul.admin_menu li ul.admin_menu_options li a { - color:red; - background-color:white; - display:block; - margin:0px; - padding:2px 4px 2px 13px; +.profile-admin-menu-wrapper li a { + background-color: white; + color: red; + margin-bottom: 0; } -.owner_block_links ul.admin_menu li ul.admin_menu_options li a:hover { - color:black; - background:none; - text-decoration: underline; +.profile-admin-menu-wrapper a:hover { + color: black; } - /* *************************************** full profile info panel *************************************** */ diff --git a/mod/profile/views/default/profile/ownerblock.php b/mod/profile/views/default/profile/ownerblock.php index 2197164cb..ac0cb5b54 100755 --- a/mod/profile/views/default/profile/ownerblock.php +++ b/mod/profile/views/default/profile/ownerblock.php @@ -21,69 +21,62 @@ if (!$user) { $more_info = ''; -$location = elgg_view("output/tags",array('value' => $user->location)); +$location = elgg_view("output/tags", array('value' => $user->location)); -$icon = elgg_view("profile/icon",array('entity' => $user, 'size' => 'large', 'override' => 'true')); +$icon = elgg_view("profile/icon", array( + 'entity' => $user, + 'size' => 'large', + 'override' => 'true' +)); $icon_class = "large"; -// @todo pull out into menu -$profile_actions = ""; -if (isloggedin() && (get_loggedin_userid() == elgg_get_page_owner_guid())) { - $profile_actions = "
"; - $profile_actions .= "". elgg_echo('profile:edit') .""; - $profile_actions .= "". elgg_echo('avatar:edit') .""; - $profile_actions .= "
"; -} else { - $profile_actions = "
"; - if (isloggedin()) { - if (get_loggedin_userid() != $user->getGUID()) { - if ($user->isFriend()) { - $url = elgg_get_site_url()."action/friends/remove?friend={$user->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - $profile_actions .= "" . elgg_echo('friend:remove') . ""; - } else { - $url = elgg_get_site_url()."action/friends/add?friend={$user->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - $profile_actions .= "" . elgg_echo('friend:add') . ""; - } - } - } - if (is_plugin_enabled('messages') && isloggedin()) { - $profile_actions .= "guid}\" class='elgg-action-button'>". elgg_echo('messages:send') .""; +// grab the actions and admin menu items from user hover +$menu = elgg_trigger_plugin_hook('register', "menu:user_hover", array('entity' => $user), array()); +$builder = new ElggMenuBuilder($menu); +$menu = $builder->getMenu(); +$actions = elgg_get_array_value('action', $menu, array()); +$admin = elgg_get_array_value('admin', $menu, array()); + +$profile_actions = ''; +if (isloggedin() && $actions) { + $profile_actions = '
"; + $profile_actions .= ''; } - // if admin, display admin links $admin_links = ''; if (isadminloggedin() && get_loggedin_userid() != elgg_get_page_owner_guid()) { - $params = array( - 'user' => elgg_get_page_owner(), - 'toggle' => true, - 'sort_by' => 'order', - ); - $admin_links = elgg_view_menu('user_admin', $params); - $admin_links = "
$admin_links
"; + $admin_links = ''; } // content links -$menu = elgg_view_menu('owner_block', array('entity' => elgg_get_page_owner())); +$content_menu = elgg_view_menu('owner_block', array( + 'entity' => elgg_get_page_owner(), + 'class' => 'profile-content-menu', +)); //contruct the display $display = << -
- {$icon} -
- {$more_info} - {$profile_actions} -