]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added a user admin menu that plugins can add menu items to
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sun, 19 Dec 2010 03:17:51 +0000 (03:17 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sun, 19 Dec 2010 03:17:51 +0000 (03:17 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@7678 36083f99-b078-4883-b0ff-0f9b5a30f544

12 files changed:
engine/lib/users.php
mod/logbrowser/start.php
mod/logbrowser/views/default/logbrowser/adminlinks.php [deleted file]
mod/profile/views/default/profile/admin_menu.php [deleted file]
mod/profile/views/default/profile/hoverover.php [deleted file]
mod/profile/views/default/profile/icon.php [deleted file]
mod/profile/views/default/profile/ownerblock.php
mod/tabbed_profile/views/default/profile/admin_menu.php [deleted file]
mod/tabbed_profile/views/default/profile/hoverover.php [deleted file]
mod/tabbed_profile/views/default/profile/ownerblock.php
views/default/navigation/menu/user_admin.php [new file with mode: 0644]
views/default/profile/icon.php [moved from mod/tabbed_profile/views/default/profile/icon.php with 89% similarity]

index 0482fd0342db2e28b4acd61fa4560f4ab692aac0..d95f32475bd8fbae12d1ecf592c519d813acd38f 100644 (file)
@@ -1477,6 +1477,34 @@ function user_avatar_hook($hook, $entity_type, $returnvalue, $params){
        return "pg/avatar/view/{$entity->username}?size=$size";
 }
 
+/**
+ * Setup the user admin menu
+ */
+function elgg_user_admin_menu($hook, $type, $return, $params) {
+       $user = $params['user'];
+
+       $actions = array();
+       if (!$user->isBanned()) {
+               $actions[] = 'ban';
+       } else {
+               $actions[] = 'unban';
+       }
+       $actions[] = 'delete';
+       $actions[] = 'resetpassword';
+       if (!$user->isAdmin()) {
+               $actions[] = 'makeadmin';
+       } else {
+               $actions[] = 'removeadmin';
+       }
+
+       foreach ($actions as $action) {
+               $url = "action/admin/user/$action?guid={$user->guid}";
+               $url = elgg_add_action_tokens_to_url($url);
+               $item = new ElggMenuItem($action, elgg_echo($action), $url);
+               elgg_register_menu_item('user_admin', $item);
+       }
+}
+
 /**
  * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit
  * add and delete fields.
@@ -1656,6 +1684,8 @@ function users_init() {
                elgg_register_menu_item('page', $params);
        }
 
+       elgg_register_plugin_hook_handler('register', 'menu:user_admin', 'elgg_user_admin_menu');
+
        elgg_register_action("register", '', 'public');
        elgg_register_action("useradd", '', 'public');
        elgg_register_action("friends/add");
index 4236ce64e113a5dae9fac6444510894400bb7c86..1eda007323a069b038e57666d75a61135c89bcce 100644 (file)
@@ -12,13 +12,20 @@ elgg_register_event_handler('init', 'system', 'logbrowser_init');
  */
 function logbrowser_init() {
        
-       // Extend CSS
        elgg_extend_view('css/admin', 'logbrowser/css');
-       
-       // Extend context menu with admin logbrowser link
-       if (isadminloggedin()) {
-               elgg_extend_view('profile/menu/adminlinks', 'logbrowser/adminlinks', 10000);
-       }
+
+       elgg_register_plugin_hook_handler('register', 'menu:user_admin', 'logbrowser_user_admin_menu');
        
        elgg_add_admin_submenu_item('logbrowser', elgg_echo('logbrowser'), 'overview');
 }
+
+/**
+ * Add to the user admin menu
+ */
+function logbrowser_user_admin_menu($hook, $type, $return, $params) {
+       $user = $params['user'];
+
+       $url = "pg/admin/overview/logbrowser/?user_guid={$user->guid}";
+       $item = new ElggMenuItem('logbrowser', elgg_echo('logbrowser:explore'), $url);
+       elgg_register_menu_item('user_admin', $item);
+}
\ No newline at end of file
diff --git a/mod/logbrowser/views/default/logbrowser/adminlinks.php b/mod/logbrowser/views/default/logbrowser/adminlinks.php
deleted file mode 100644 (file)
index 03e42fb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-/**
- * The dropdown link for exploring a user's log
- *
- * @package ElggLogBrowser
- */
-?>
-<a href="<?php echo elgg_get_site_url(); ?>pg/admin/overview/logbrowser/?user_guid=<?php echo $vars['entity']->guid; ?>">
-       <?php echo elgg_echo("logbrowser:explore"); ?>
-</a>
\ No newline at end of file
diff --git a/mod/profile/views/default/profile/admin_menu.php b/mod/profile/views/default/profile/admin_menu.php
deleted file mode 100755 (executable)
index 99ed3a4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/** 
- * This is the admin menu that appears on a user's profile page
- **/
-global $CONFIG;
-
-if (isadminloggedin()){
-       if (get_loggedin_userid()!=elgg_get_page_owner_guid()){
-               $user = get_user(elgg_get_page_owner_guid());
-               $url = elgg_get_site_url();
-               $ts = time();
-               $token = generate_action_token($ts);
-
-?>
-<div class="owner_block_links clearfix">
-<ul class="admin_menu">
-<li><a href="#" onclick="elgg_slide_toggle(this,'.owner_block_links','.admin_menu_options');">Admin options&hellip;</a>
-       
-       <ul class="admin_menu_options">
-       <li><a href="<?php echo $url; ?>pg/settings/user/<?php echo $user->username; ?>/"><?php echo elgg_echo('profile:editdetails'); ?></a></li>      
-       <?php
-               if (!$user->isBanned()) {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("ban"), 'href' => "action/admin/user/ban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               } else {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("unban"), 'href' => "action/admin/user/unban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>"; 
-               }
-               echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("delete"), 'href' => "action/admin/user/delete?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("resetpassword"), 'href' => "action/admin/user/resetpassword?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               if (!$vars['entity']->admin) { 
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("makeadmin"), 'href' => "action/admin/user/makeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               } else {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("removeadmin"), 'href' => "action/admin/user/removeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               }
-       ?>
-       </ul>
-</li>  
-</ul>  
-</div>
-<?php
-       }
-}
-?>
diff --git a/mod/profile/views/default/profile/hoverover.php b/mod/profile/views/default/profile/hoverover.php
deleted file mode 100644 (file)
index 172ef5d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Elgg profile icon hover over
- * 
- * @package ElggProfile
- * 
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed. 
- */
-?>
-<li class="user_menu_name">
-       <?php echo $vars['entity']->name; ?>
-</li>
-<?php
-       echo elgg_view('profile/hoverover/actions', $vars);
-       echo elgg_view('profile/hoverover/links', $vars);
-?>
\ No newline at end of file
diff --git a/mod/profile/views/default/profile/icon.php b/mod/profile/views/default/profile/icon.php
deleted file mode 100644 (file)
index 71b25fe..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-/**
- * Elgg profile icon
- * 
- * @package ElggProfile
- * 
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed.
- * @uses $vars['size'] The size - small, medium or large. If none specified, medium is assumed. 
- */
-
-// Get entity
-if (empty($vars['entity'])) {
-       $vars['entity'] = get_loggedin_user();
-}
-
-if ($vars['entity'] instanceof ElggUser) {
-       $name = htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8');
-       $username = $vars['entity']->username;
-
-       if ($icontime = $vars['entity']->icontime) {
-               $icontime = "{$icontime}";
-       } else {
-               $icontime = "default";
-       }
-       
-       // Get size
-       if (!in_array($vars['size'],array('small','medium','large','tiny','master','topbar'))) {
-               $vars['size'] = 'medium';
-       }
-       
-       // Get any align and js
-       if (!empty($vars['align'])) {
-               $align = " align=\"{$vars['align']}\" ";
-       } else {
-               $align = '';
-       }
-
-       // Override
-       if (isset($vars['override']) && $vars['override'] == true) {
-               $override = true;
-       } else {
-               $override = false;
-       }
-       // profile avatar drop-down menu
-       if (!$override) {
-       ?>      
-               <div class="usericon <?php echo $vars['size']; ?>">
-               <div class="avatar_menu_button"><img src="<?php echo elgg_get_site_url(); ?>_graphics/spacer.gif" border="0" width="15" height="15" /></div>
-               <div class="sub_menu">
-                       <h3 class="displayname"><a href="<?php echo $vars['entity']->getURL(); ?>"><?php echo $vars['entity']->name; ?>
-                       <span class="username"><?php echo "&#64;" . $vars['entity']->username; ?></span></a></h3>                       
-                       <?php
-                       echo "<ul class='sub_menu_list'>";
-                               if (isloggedin()) {
-                                       // if not looking at your own avatar menu
-                                       if ($vars['entity']->getGUID() != get_loggedin_userid()) {
-                                       
-                                               // Add / Remove friend link
-                                               $friendlinks = elgg_view('profile/menu/friendlinks',$vars);
-                                               if (!empty($friendlinks)) {
-                                                       echo "<li class='user_menu_profile'>{$friendlinks}</li>";
-                                               }
-                                               // view for plugins to extend
-                                               echo elgg_view('profile/menu/links',$vars);
-                                       } else {
-                                               // if looking at your own avatar menu - provide a couple of handy links
-                                               ?>
-                                               <li class="user_menu_profile">
-                                                       <a class="edit_profile" href="<?php echo elgg_get_site_url()?>pg/profile/<?php echo $vars['entity']->username; ?>/edit/details"><?php echo elgg_echo("profile:edit"); ?></a>
-                                               </li>
-                                               <li class="user_menu_profile">
-                                                       <a class="edit_avatar" href="<?php echo elgg_get_site_url()?>pg/profile/<?php echo $vars['entity']->username; ?>/edit/icon"><?php echo elgg_echo("profile:editicon"); ?></a>
-                                               </li>
-                                               <?php
-                                       }
-                                       
-                                       // if Admin is logged in, and not looking at admins own avatar menu
-                                       if (isadminloggedin() && (get_loggedin_userid()!=$vars['entity']->guid) ){
-                                               $adminlinks = elgg_view('profile/menu/adminlinks', $vars);
-                                               if (!empty($adminlinks)) {
-                                                       echo "<li class='user_menu_admin'>{$adminlinks}</li>";
-                                               }
-                                       }
-               
-                               }
-                               echo "</ul>";
-                       ?>
-               </div>  
-                       <?php
-                               if ((isadminloggedin()) || (!$vars['entity']->isBanned())) {
-                                ?><a href="<?php echo $vars['entity']->getURL(); ?>" class="icon" ><?php 
-                               }
-               
-       } 
-
-       // Rounded avatar corners - CSS3 method - users avatar as background image so we can clip it with border-radius in supported browsers
-       ?>
-       <img src="<?php echo elgg_get_site_url(); ?>_graphics/spacer.gif" border="0" <?php echo $align; ?> alt="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" title="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" <?php echo $vars['js']; ?> style="background: url(<?php echo $vars['entity']->getIcon($vars['size']); ?>) no-repeat;" class="<?php echo $vars['size']; ?>" />
-       <?php
-       /*
-       original avatar method
-       <img src="<?php echo elgg_format_url($vars['entity']->getIcon($vars['size'])); ?>" border="0" <?php echo $align; ?> alt="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" title="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" <?php echo $vars['js']; ?> />
-       */
-
-       if (!$override) { 
-       ?>
-               </a></div>
-       <?php
-       }
-}
\ No newline at end of file
index c0b5fd898e41cb10e23b3f4a7cd7fad958a75237..684209569ed0fee3ee8a0493b8a4302b47fb7a33 100755 (executable)
@@ -67,11 +67,16 @@ $email = $user->email;
 $phone = $user->phone;
 
 
-//if admin display admin links
-if (isadminloggedin()) {
-       $admin_links = elgg_view('profile/admin_menu');
-} else {
-       $admin_links = '';
+// 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 = "<div class=\"owner_block_links\">$admin_links</div>";
 }
 
 $menu = elgg_view_menu('user_ownerblock', array('user' => elgg_get_page_owner()));
diff --git a/mod/tabbed_profile/views/default/profile/admin_menu.php b/mod/tabbed_profile/views/default/profile/admin_menu.php
deleted file mode 100755 (executable)
index 99ed3a4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/** 
- * This is the admin menu that appears on a user's profile page
- **/
-global $CONFIG;
-
-if (isadminloggedin()){
-       if (get_loggedin_userid()!=elgg_get_page_owner_guid()){
-               $user = get_user(elgg_get_page_owner_guid());
-               $url = elgg_get_site_url();
-               $ts = time();
-               $token = generate_action_token($ts);
-
-?>
-<div class="owner_block_links clearfix">
-<ul class="admin_menu">
-<li><a href="#" onclick="elgg_slide_toggle(this,'.owner_block_links','.admin_menu_options');">Admin options&hellip;</a>
-       
-       <ul class="admin_menu_options">
-       <li><a href="<?php echo $url; ?>pg/settings/user/<?php echo $user->username; ?>/"><?php echo elgg_echo('profile:editdetails'); ?></a></li>      
-       <?php
-               if (!$user->isBanned()) {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("ban"), 'href' => "action/admin/user/ban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               } else {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("unban"), 'href' => "action/admin/user/unban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>"; 
-               }
-               echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("delete"), 'href' => "action/admin/user/delete?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("resetpassword"), 'href' => "action/admin/user/resetpassword?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               if (!$vars['entity']->admin) { 
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("makeadmin"), 'href' => "action/admin/user/makeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               } else {
-                       echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("removeadmin"), 'href' => "action/admin/user/removeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
-               }
-       ?>
-       </ul>
-</li>  
-</ul>  
-</div>
-<?php
-       }
-}
-?>
diff --git a/mod/tabbed_profile/views/default/profile/hoverover.php b/mod/tabbed_profile/views/default/profile/hoverover.php
deleted file mode 100644 (file)
index 172ef5d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-/**
- * Elgg profile icon hover over
- * 
- * @package ElggProfile
- * 
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed. 
- */
-?>
-<li class="user_menu_name">
-       <?php echo $vars['entity']->name; ?>
-</li>
-<?php
-       echo elgg_view('profile/hoverover/actions', $vars);
-       echo elgg_view('profile/hoverover/links', $vars);
-?>
\ No newline at end of file
index 3fb5f509eb145bfe140cca3f1d911ddefff6005d..85c9306781178ccd5d965dca7c64a6c14e8c30ba 100755 (executable)
@@ -67,11 +67,16 @@ $email = $user->email;
 $phone = $user->phone;
 
 
-//if admin display admin links
-if (isadminloggedin()) {
-       $admin_links = elgg_view('profile/admin_menu');
-} else {
-       $admin_links = '';
+// 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 = "<div class=\"owner_block_links\">$admin_links</div>";
 }
 
 
diff --git a/views/default/navigation/menu/user_admin.php b/views/default/navigation/menu/user_admin.php
new file mode 100644 (file)
index 0000000..1972d79
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * User admin menu
+ *
+ * @todo css/html clean up needed as this was pulled from early 1.8 profile code
+ *
+ * @uses vars['menu']
+ * @uses vars['toggle']
+ */
+
+$toggle = elgg_get_array_value('toggle', $vars, false);
+
+$id = '';
+
+if ($toggle) {
+       echo '<ul class="admin_menu">';
+       echo '<li><a class="elgg-toggle" id="elgg-toggler-admin-menu">Admin options&hellip;</a>';
+       $id = 'id="elgg-togglee-admin-menu"';
+}
+foreach ($vars['menu'] as $section => $menu_items) {
+       echo "<ul class=\"admin_menu_options\" $id>";
+       foreach ($menu_items as $menu_item) {
+               echo elgg_view('navigation/menu/elements/item', array('item' => $menu_item));
+       }
+       echo '</ul>';
+}
+if ($toggle) {
+       echo '<li>';
+       echo '<ul>';
+}
\ No newline at end of file
similarity index 89%
rename from mod/tabbed_profile/views/default/profile/icon.php
rename to views/default/profile/icon.php
index 71b25fe6cf2a21a0b3590838ee9945081b9329d7..f58fbf10d670f5a06b79675ef12523670aa5d41a 100644 (file)
@@ -76,10 +76,14 @@ if ($vars['entity'] instanceof ElggUser) {
                                        }
                                        
                                        // if Admin is logged in, and not looking at admins own avatar menu
-                                       if (isadminloggedin() && (get_loggedin_userid()!=$vars['entity']->guid) ){
-                                               $adminlinks = elgg_view('profile/menu/adminlinks', $vars);
-                                               if (!empty($adminlinks)) {
-                                                       echo "<li class='user_menu_admin'>{$adminlinks}</li>";
+                                       if (isadminloggedin() && get_loggedin_userid() != $vars['entity']->guid) {
+                                               $params = array(
+                                                       'user' => $vars['entity'],
+                                                       'sort_by' => 'order',
+                                               );
+                                               $admin_links = elgg_view_menu('user_admin', $params);
+                                               if (!empty($admin_links)) {
+                                                       echo "<li class='user_menu_admin'>{$admin_links}</li>";
                                                }
                                        }
                
@@ -89,9 +93,10 @@ if ($vars['entity'] instanceof ElggUser) {
                </div>  
                        <?php
                                if ((isadminloggedin()) || (!$vars['entity']->isBanned())) {
-                                ?><a href="<?php echo $vars['entity']->getURL(); ?>" class="icon" ><?php 
+                               ?>
+                                       <a href="<?php echo $vars['entity']->getURL(); ?>" class="icon" >
+                               <?php
                                }
-               
        } 
 
        // Rounded avatar corners - CSS3 method - users avatar as background image so we can clip it with border-radius in supported browsers