MAINT-9049 [EAM] Allow adding multiple avatars to the list, ignoring inappropriate one for that list if it was selected

meow-7.2.2
maxim_productengine 2018-08-30 16:06:24 +03:00
parent 50643cace9
commit 6dbab94684
1 changed files with 36 additions and 9 deletions

View File

@ -3626,6 +3626,7 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
return;
}
uuid_vec_t ids_allowed;
std::string already_allowed;
bool single = true;
for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
@ -3640,6 +3641,10 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
}
already_allowed += item->getColumn(0)->getValue().asString();
}
else
{
ids_allowed.push_back(*it);
}
}
if (!already_allowed.empty())
{
@ -3647,9 +3652,13 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
args["AGENT"] = already_allowed;
args["LIST_TYPE"] = LLTrans::getString("RegionInfoListTypeAllowedAgents");
LLNotificationsUtil::add(single ? "AgentIsAlreadyInList" : "AgentsAreAlreadyInList", args);
delete change_info;
return;
if (ids_allowed.empty())
{
delete change_info;
return;
}
}
change_info->mAgentOrGroupIDs = ids_allowed;
}
if (change_info->mOperationFlag & ESTATE_ACCESS_BANNED_AGENT_ADD)
{
@ -3668,16 +3677,22 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
return;
}
uuid_vec_t ids_allowed;
std::string already_banned;
std::string em_ban;
bool single = true;
for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
{
bool is_allowed = true;
LLScrollListItem* em_item = em_list->getNameItemByAgentId(*it);
if (em_item)
{
em_ban = em_item->getColumn(0)->getValue().asString();
break;
if (!em_ban.empty())
{
em_ban += ", ";
}
em_ban += em_item->getColumn(0)->getValue().asString();
is_allowed = false;
}
LLScrollListItem* item = name_list->getNameItemByAgentId(*it);
@ -3689,6 +3704,12 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
single = false;
}
already_banned += item->getColumn(0)->getValue().asString();
is_allowed = false;
}
if (is_allowed)
{
ids_allowed.push_back(*it);
}
}
if (!em_ban.empty())
@ -3696,8 +3717,11 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
LLSD args;
args["AGENT"] = em_ban;
LLNotificationsUtil::add("ProblemBanningEstateManager", args);
delete change_info;
return;
if (ids_allowed.empty())
{
delete change_info;
return;
}
}
if (!already_banned.empty())
{
@ -3705,14 +3729,17 @@ void LLPanelEstateAccess::accessAddCore3(const uuid_vec_t& ids, void* data)
args["AGENT"] = already_banned;
args["LIST_TYPE"] = LLTrans::getString("RegionInfoListTypeBannedAgents");
LLNotificationsUtil::add(single ? "AgentIsAlreadyInList" : "AgentsAreAlreadyInList", args);
delete change_info;
return;
if (ids_allowed.empty())
{
delete change_info;
return;
}
}
change_info->mAgentOrGroupIDs = ids_allowed;
}
LLSD args;
args["ALL_ESTATES"] = all_estates_text();
LLNotification::Params params(change_info->mDialogName);
params.substitutions(args)
.payload(change_info->asLLSD())