]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.9.x'
authorBrion Vibber <brion@pobox.com>
Fri, 18 Mar 2011 23:39:41 +0000 (16:39 -0700)
committerBrion Vibber <brion@pobox.com>
Fri, 18 Mar 2011 23:39:41 +0000 (16:39 -0700)
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 2e90de4f19adc2f470f434fa007751ad5ad7ec7b..511e8ee1442dbbe2eda02138137ba6d6dc8dec1a 100644 (file)
@@ -4,20 +4,36 @@
  */
 
 $(function() {
-    function ModPlus_setup(notice) {
-        if ($(notice).find('.remote-profile-options').size()) {
-            var $options = $(notice).find('.remote-profile-options');
-            $options.prepend($())
-            $(notice).find('.author').mouseenter(function(event) {
-                $(notice).find('.remote-profile-options').fadeIn();
-            });
-            $(notice).mouseleave(function(event) {
-                $(notice).find('.remote-profile-options').fadeOut();
-            });
+    // Notice lists...
+    $('.notice .author').live('mouseenter', function(e) {
+        var notice = $(this).closest('.notice');
+        var popup = notice.find('.remote-profile-options');
+        if (popup.length) {
+            popup.fadeIn();
         }
-    }
+    });
+    $('.notice').live('mouseleave', function(e) {
+        var notice = $(this);
+        var popup = notice.find('.remote-profile-options');
+        if (popup.length) {
+            popup.fadeOut();
+        }
+    });
 
-    $('.notice').each(function() {
-        ModPlus_setup(this);
+    // 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();
+        }
+    });
+
 });