| changelog_bot ( @ 2008-12-02 15:40:00 |
[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?>