changelog_bot ([info]changelog_bot) wrote in [info]changelog,
@ 2008-12-02 15:40:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
[livejournal] r14599: LJSUP-2859: New option in popup menu for...
Committer: decathloner
LJSUP-2859: New option in popup menu for ban/unban.

U   trunk/htdocs/js/contextualhover.js
U   trunk/htdocs/tools/endpoints/changerelation.bml
U   trunk/htdocs/tools/endpoints/ctxpopup.bml
Modified: trunk/htdocs/js/contextualhover.js
===================================================================
--- trunk/htdocs/js/contextualhover.js	2008-12-02 14:02:22 UTC (rev 14598)
+++ trunk/htdocs/js/contextualhover.js	2008-12-02 15:40:21 UTC (rev 14599)
@@ -419,6 +419,62 @@
             content.appendChild(vgift);
         }
 
+        // ban / unban
+        var ban;
+        if (data.is_logged_in && ! data.is_requester) {
+            ban = document.createElement("span");
+
+            if(!data.is_banned) {
+                // if user no banned - show ban link
+                var setBan = document.createElement("span");
+                var setBanLink = document.createElement("a");
+                
+                setBanLink.href = window.Site.siteroot + '/manage/banusers.bml';
+                setBanLink.innerHTML = 'Ban user';
+                
+                setBan.appendChild(setBanLink);
+
+                DOM.addClassName(setBan, "SetBan");
+
+                if (!ContextualPopup.disableAJAX) {
+                    DOM.addEventListener(setBanLink, "click", function (e) {
+                        Event.prep(e);
+                        Event.stop(e);
+                        return ContextualPopup.changeRelation(data, ctxPopupId, "setBan", e); });
+                }
+
+                ban.appendChild(setBan);
+
+
+                
+            } else {
+                // if use banned - show unban link
+                var setUnban = document.createElement("span");
+                var setUnbanLink = document.createElement("a");
+                setUnbanLink.href = window.Site.siteroot + '/manage/banusers.bml';
+                setUnbanLink.innerHTML = 'Unban user';
+                setUnban.appendChild(setUnbanLink);
+
+                DOM.addClassName(setUnban, "SetUnban");
+
+                if (!ContextualPopup.disableAJAX) {
+                    DOM.addEventListener(setUnbanLink, "click", function (e) {
+                        Event.prep(e);
+                        Event.stop(e);
+                        return ContextualPopup.changeRelation(data, ctxPopupId, "setUnban", e); });
+                }
+
+                ban.appendChild(setUnban);
+ 
+            }
+        }
+        
+        if(ban) {
+            content.appendChild(document.createElement("br"));    
+            content.appendChild(ban);
+        }
+
+
         // break
         if ((data.is_logged_in && !data.is_requester) || vgift) content.appendChild(document.createElement("br"));
 
@@ -449,6 +505,8 @@
         profileLink.innerHTML = "Profile";
         content.appendChild(profileLink);
 
+        
+        
         // clearing div
         var clearingDiv = document.createElement("div");
         DOM.addClassName(clearingDiv, "ljclear");
@@ -491,7 +549,7 @@
         if (!data.success) return;
 
         if (ContextualPopup.cachedResults[ctxPopupId + ""]) {
-            var updatedProps = ["is_friend", "is_member"];
+            var updatedProps = ["is_friend", "is_member", 'is_banned'];
             updatedProps.forEach(function (prop) {
                 ContextualPopup.cachedResults[ctxPopupId + ""][prop] = data[prop];
             });
@@ -579,7 +637,7 @@
     // needed on journal subdomains
     var url = LiveJournal.getAjaxUrl("ctxpopup");
     var url = Site.currentJournal ? "/" + Site.currentJournal + "/__rpc_ctxpopup" : "/__rpc_ctxpopup";
-
+    
     // got data callback
     var gotInfo = function (data) {
         if (ContextualPopup && ContextualPopup.hourglass) ContextualPopup.hideHourglass();

Modified: trunk/htdocs/tools/endpoints/changerelation.bml
===================================================================
--- trunk/htdocs/tools/endpoints/changerelation.bml	2008-12-02 14:02:22 UTC (rev 14598)
+++ trunk/htdocs/tools/endpoints/changerelation.bml	2008-12-02 15:40:21 UTC (rev 14599)
@@ -93,6 +93,22 @@
         }
 
         $success = LJ::leave_community($remote, $targetu);
+    } elsif ($action eq 'setBan') {
+        my $list_of_banned = LJ::load_rel_user($remote, 'B') || [ ];
+        
+        return $err->("Exceeded limit maximum of banned users")
+            if @$list_of_banned >= ($LJ::MAX_BANS || 5000);
+        
+        my $ban_user = LJ::load_user($target);
+        $success = $remote->ban_user($ban_user);
+
+        #$ret{is_banned} = $remote->is_banned($ban_user) ? 1 : 0;
+        
+    } elsif ($action eq 'setUnban') {    
+        my $unban_user = LJ::load_user($target);
+        $success = $remote->unban_user_multi($unban_user->{userid});
+        #$ret{is_banned} = $remote->is_banned($unban_user) ? 1 : 0;
+    
     } else {
         return $err->("Invalid action $action");
     }
@@ -106,6 +122,7 @@
         success   => $success,
         is_friend => LJ::is_friend($remote, $targetu),
         is_member => LJ::is_friend($targetu, $remote),
+        is_banned => $remote->is_banned(LJ::load_user($target)),
         %ret,
     });
 }

Modified: trunk/htdocs/tools/endpoints/ctxpopup.bml
===================================================================
--- trunk/htdocs/tools/endpoints/ctxpopup.bml	2008-12-02 14:02:22 UTC (rev 14598)
+++ trunk/htdocs/tools/endpoints/ctxpopup.bml	2008-12-02 15:40:21 UTC (rev 14599)
@@ -104,7 +104,7 @@
 
     # generate auth tokens
     if ($remote) {
-        push @actions, 'addFriend', 'removeFriend';
+        push @actions, 'addFriend', 'removeFriend', 'setBan' , 'setUnban';
         foreach my $action (@actions) {
             $ret{"${action}_authtoken"} = LJ::Auth->ajax_auth_token(
                                                                     $remote,
@@ -116,12 +116,13 @@
     }
 
     sleep(1.5) if $LJ::IS_DEV_SERVER;
-
     my %extrainfo = LJ::run_hook("ctxpopup_extra_info", $u);
     %ret = (%ret, %extrainfo);
 
+    $ret{is_banned} = LJ::is_banned($u,$remote) ? 1 : 0
+        if $remote && $u;
+
     $ret{success} = 1;
-
     return LJ::js_dumper(\%ret);
 }
 _code?>



(Post a new comment)


[info]azurelunatic
2008-12-02 09:21 pm UTC (link)
Would highly recommend that ban not appear for people who are currently added as a friend, because it's horribly easy to click something on that blessed thing.

(Reply to this)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…