]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ModPlus plugin -- Ticket #3095: add remote profile options popup to group membership...
authorBrion Vibber <brion@pobox.com>
Fri, 18 Mar 2011 23:35:50 +0000 (16:35 -0700)
committerBrion Vibber <brion@pobox.com>
Fri, 18 Mar 2011 23:35:50 +0000 (16:35 -0700)
Popup remote profile options menu now shown on profile lists as well as notice lists.

plugins/ModPlus/ModPlusPlugin.php
plugins/ModPlus/modplus.js

index d2b7c09346ba4a8758d820812b7dad1eab5b0c52..f8351f0988759feb88dbb825ce53f6c20c2e7126 100644 (file)
@@ -84,7 +84,7 @@ class ModPlusPlugin extends Plugin
     }
 
     /**
-     * Add OpenID-related paths to the router table
+     * Add ModPlus-related paths to the router table
      *
      * Hook for RouterInitialized event.
      *
@@ -101,16 +101,45 @@ class ModPlusPlugin extends Plugin
         return true;
     }
 
+    /**
+     * Add per-profile info popup menu for author on notice lists.
+     *
+     * @param NoticeListItem $item
+     * @return boolean hook value
+     */
     function onStartShowNoticeItem($item)
     {
-        $profile = $item->profile;
+        $this->showProfileOptions($item->out, $item->profile);
+        return true;
+    }
+
+    /**
+     * Add per-profile info popup menu on profile lists.
+     *
+     * @param ProfileListItem $item
+     */
+    function onStartProfileListItemProfile($item)
+    {
+        $this->showProfileOptions($item->out, $item->profile);
+        return true;
+    }
+
+    /**
+     * Build common remote-profile options structure.
+     * Currently only adds output for remote profiles, nothing for local users.
+     *
+     * @param HTMLOutputter $out
+     * @param Profile $profile
+     */
+    protected function showProfileOptions(HTMLOutputter $out, Profile $profile)
+    {
         $isRemote = !(User::staticGet('id', $profile->id));
         if ($isRemote) {
             $target = common_local_url('remoteprofile', array('id' => $profile->id));
             $label = _m('Remote profile options...');
-            $item->out->elementStart('div', 'remote-profile-options');
-            $item->out->element('a', array('href' => $target), $label);
-            $item->out->elementEnd('div');
+            $out->elementStart('div', 'remote-profile-options');
+            $out->element('a', array('href' => $target), $label);
+            $out->elementEnd('div');
         }
     }
 }
index 023dee5762092dc9f4b1cfe2804652bd989f19a6..511e8ee1442dbbe2eda02138137ba6d6dc8dec1a 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 $(function() {
+    // Notice lists...
     $('.notice .author').live('mouseenter', function(e) {
         var notice = $(this).closest('.notice');
         var popup = notice.find('.remote-profile-options');
@@ -18,4 +19,21 @@ $(function() {
             popup.fadeOut();
         }
     });
+
+    // Profile lists...
+    $('.profile .avatar').live('mouseenter', function(e) {
+        var profile = $(this).closest('.profile');
+        var popup = profile.find('.remote-profile-options');
+        if (popup.length) {
+            popup.fadeIn();
+        }
+    });
+    $('.profile').live('mouseleave', function(e) {
+        var profile = $(this);
+        var popup = profile.find('.remote-profile-options');
+        if (popup.length) {
+            popup.fadeOut();
+        }
+    });
+
 });