From 07f913b06273f83a603679d150e653db90395914 Mon Sep 17 00:00:00 2001
From: AndreyL ProductEngine <alihatskiy@productengine.com>
Date: Sat, 29 Apr 2017 00:45:12 +0300
Subject: [PATCH] MAINT-7324 Changes to Region/Estate and About Land floaters
 to clarify and add functionality

---
 indra/newview/llfloaterland.cpp               |  3 +-
 indra/newview/llfloaterregioninfo.cpp         | 18 +++-
 indra/newview/llfloaterregioninfo.h           |  1 +
 .../default/xui/en/floater_about_land.xml     | 48 +++++-----
 .../skins/default/xui/en/notifications.xml    | 11 +++
 .../default/xui/en/panel_region_estate.xml    | 88 ++++++++++---------
 .../newview/skins/default/xui/en/strings.xml  | 10 +--
 7 files changed, 105 insertions(+), 74 deletions(-)

diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index abe9f999140..43529097064 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2678,7 +2678,8 @@ void LLPanelLandAccess::refresh_ui()
 		std::string group_name;
 		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
 		{
-			getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+			bool can_allow_groups = !public_access || (public_access && (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean() ^ getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean()));
+			getChildView("GroupCheck")->setEnabled(can_manage_allowed && can_allow_groups);
 		}
 		getChildView("AccessList")->setEnabled(can_manage_allowed);
 		S32 allowed_list_count = parcel->mAccessList.size();
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index f4bc3302ba3..5e6d9673340 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2231,7 +2231,7 @@ bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg)
 BOOL LLPanelEstateInfo::postBuild()
 {
 	// set up the callbacks for the generic controls
-	initCtrl("externally_visible_check");
+	initCtrl("externally_visible_radio");
 	initCtrl("allow_direct_teleport");
 	initCtrl("limit_payment");
 	initCtrl("limit_age_verified");
@@ -2284,13 +2284,15 @@ BOOL LLPanelEstateInfo::postBuild()
 	childSetAction("message_estate_btn", boost::bind(&LLPanelEstateInfo::onClickMessageEstate, this));
 	childSetAction("kick_user_from_estate_btn", boost::bind(&LLPanelEstateInfo::onClickKickUser, this));
 
+	getChild<LLUICtrl>("parcel_access_override")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeAccessOverride, this));
+
 	return LLPanelRegionInfo::postBuild();
 }
 
 void LLPanelEstateInfo::refresh()
 {
 	// Disable access restriction controls if they make no sense.
-	bool public_access = getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean();
+	bool public_access = getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex();
 
 	getChildView("Only Allow")->setEnabled(public_access);
 	getChildView("limit_payment")->setEnabled(public_access);
@@ -2311,7 +2313,7 @@ void LLPanelEstateInfo::refreshFromEstate()
 	getChild<LLUICtrl>("estate_name")->setValue(estate_info.getName());
 	setOwnerName(LLSLURL("agent", estate_info.getOwnerID(), "inspect").getSLURLString());
 
-	getChild<LLUICtrl>("externally_visible_check")->setValue(estate_info.getIsExternallyVisible());
+	getChild<LLRadioGroup>("externally_visible_radio")->setSelectedIndex(estate_info.getIsExternallyVisible() ? 1 : 0);
 	getChild<LLUICtrl>("voice_chat_check")->setValue(estate_info.getAllowVoiceChat());
 	getChild<LLUICtrl>("allow_direct_teleport")->setValue(estate_info.getAllowDirectTeleport());
 	getChild<LLUICtrl>("limit_payment")->setValue(estate_info.getDenyAnonymous());
@@ -2354,7 +2356,7 @@ bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, con
 
 			// update model
 			estate_info.setUseFixedSun(false); // we don't support fixed sun estates anymore
-			estate_info.setIsExternallyVisible(getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean());
+			estate_info.setIsExternallyVisible(getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex());
 			estate_info.setAllowDirectTeleport(getChild<LLUICtrl>("allow_direct_teleport")->getValue().asBoolean());
 			estate_info.setDenyAnonymous(getChild<LLUICtrl>("limit_payment")->getValue().asBoolean());
 			estate_info.setDenyAgeUnverified(getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean());
@@ -2462,6 +2464,14 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re
 	return false;
 }
 
+void LLPanelEstateInfo::onChangeAccessOverride()
+{
+	if (!getChild<LLUICtrl>("parcel_access_override")->getValue().asBoolean())
+	{
+		LLNotificationsUtil::add("EstateParcelAccessOverride");
+	}
+}
+
 LLPanelEstateCovenant::LLPanelEstateCovenant()
 	:
 	mCovenantID(LLUUID::null),
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index dbb0ad05e92..c9d0e516409 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -274,6 +274,7 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	
 	void onChangeFixedSun();
 	void onChangeUseGlobalTime();
+	void onChangeAccessOverride();
 	
 	void onClickEditSky();
 	void onClickEditSkyHelp();	
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index a137770e266..535af317d99 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1896,49 +1896,37 @@ Only large parcels can be listed in search.
              layout="topleft"
              left="8"
              name="public_access"
-             label="Allow Public Access (Unchecking this will create ban lines)"
+             label="Anyone can visit (Unchecking this will create ban lines)"
              top_pad="10" 
              width="278" />
-            <text
-             type="string"
-             length="1"
-             follows="top|left"
-             height="16"
-             layout="topleft"
-             left_delta="20"
-             name="Only Allow"
-             top="30"
-             width="325">
-                Allow access only to Residents who:
-            </text>
             <check_box
              follows="top|left"
              height="16"
-             label="Have payment Information on File [ESTATE_PAYMENT_LIMIT]"
+             label="Must be 18+ [ESTATE_AGE_LIMIT]"
              layout="topleft"
-             left_delta="0"
-             name="limit_payment"
-             tool_tip="Residents must have payment information on file to access this parcel.  See the [SUPPORT_SITE] for more information."
+             left_delta="20"
+             name="limit_age_verified"
+             tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
              follows="top|left"
              height="16"
-             label="Are age 18 or older [ESTATE_AGE_LIMIT]"
+             label="Must have payment info on file [ESTATE_PAYMENT_LIMIT]"
              layout="topleft"
              left_delta="0"
-             name="limit_age_verified"
-             tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
+             name="limit_payment"
+             tool_tip="Residents must have payment information on file to access this parcel.  See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
              height="16"
-             label="Allow Group Access: [GROUP]"
+             label="Allow group [GROUP] with no restrictions"
              layout="topleft"
              left="8"
              name="GroupCheck"
              tool_tip="Set group in the General tab."
-             top="89"
+             top="73"
              width="278" />
             <check_box
              enabled="false"
@@ -1996,6 +1984,18 @@ Only large parcels can be listed in search.
              name="HoursSpin"
              top_pad="5"
              width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="top|left"
+             height="16"
+             layout="topleft"
+             left="8"
+             name="OwnerLimited"
+             top_pad="5"
+             width="400">
+                (The estate owner may have limited these choices)
+            </text>            
             <panel
             name="Allowed_layout_panel"
             follows="top|left"
@@ -2014,7 +2014,7 @@ Only large parcels can be listed in search.
              name="AllowedText"
              top="0"
              width="230">
-                Allowed Residents ([COUNT], max [MAX])
+                Always allowed ([COUNT], max [MAX])
             </text>
             <name_list
              column_padding="0"
@@ -2063,7 +2063,7 @@ Only large parcels can be listed in search.
              name="BanCheck"
              top="0"
              width="200">
-                Banned Residents ([COUNT], max [MAX])
+                Always banned ([COUNT], max [MAX])
             </text>
             <name_list
              column_padding="0"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c4190a49407..340a8528286 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4977,6 +4977,17 @@ Are you sure you want to change the Estate Covenant?
      yestext="OK"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="EstateParcelAccessOverride"
+   type="alertmodal">
+Unchecking this option may remove restrictions that parcel owners have added to prevent griefing, maintain privacy, or protect underage residents from adult material. Please discuss with your parcel owners as needed.
+    <tag>confirm</tag>
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="RegionEntryAccessBlocked"
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 69e7a7b7a56..72b563dd99b 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -82,24 +82,32 @@
     <view_border
      bevel_style="none"
      follows="top|left"
-     height="95"
+     height="100"
      layout="topleft"
      left="10"
      top_pad="5"
-     width="470" />
-
-    <check_box
-     height="20"
-     label="Allow Public Access"
+     width="505" />
+    <radio_group
+     height="32"
      layout="topleft"
-     left="20"
-     name="externally_visible_check"
+     name="externally_visible_radio"
      top_delta="5"
-     width="200" />
-
+     left="20"
+     width="200">
+        <radio_item
+         height="16"
+         label="Allow only residents and groups listed below"
+         layout="topleft"
+         name="estate_restricted_access" />
+        <radio_item
+         height="16"
+         label="Anyone can visit"
+         layout="topleft"
+         name="estate_public_access" />
+    </radio_group>
     <check_box
      height="18"
-     label="Allow Parcel Access Override"
+     label="Parcel owners can be more restrictive"
      layout="topleft"
      left="280"
      name="parcel_access_override"
@@ -140,7 +148,7 @@
      layout="topleft"
      left="20"
      name="Only Allow"
-     top_delta="-30"
+     top_delta="-25"
      width="278">
         Allow access only to Residents who:
     </text>
@@ -173,7 +181,7 @@
      height="20"
      layout="topleft"
      name="estate_manager_label"
-     top_pad="30"
+     top_pad="25"
      left="10"
      width="200">
         Estate Managers:
@@ -188,7 +196,7 @@
      name="allow_resident_label"
      top_delta="0"
      width="200">
-        Allowed Residents:
+        Always allowed:
     </text>
 
     <!-- Estate Managers box -->
@@ -199,7 +207,7 @@
      layout="topleft"
      left="10"
      top_pad="-5"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -208,9 +216,9 @@
      multi_select="true"
      name="estate_manager_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Allowed Residents box -->
+    <!-- Always allowed box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -218,7 +226,7 @@
      layout="topleft"
      left="280"
      top_delta="0"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -227,7 +235,7 @@
      multi_select="true"
      name="allowed_avatar_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
     <!-- Estate Managers buttons -->
     <button
@@ -238,7 +246,7 @@
      left="10"
      name="add_estate_manager_btn"
      top_pad="6"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -246,9 +254,9 @@
      layout="topleft"
      name="remove_estate_manager_btn"
      left_pad="6"
-     width="97" />
+     width="114" />
 
-    <!-- Allowed Residents buttons -->
+    <!-- Always allowed buttons -->
     <button
      follows="left|top"
      height="23"
@@ -257,7 +265,7 @@
      layout="topleft"
      name="add_allowed_avatar_btn"
      top_delta="0"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -266,7 +274,7 @@
      name="remove_allowed_avatar_btn"
      left_pad="6"
      top_delta="0"
-     width="97" />
+     width="114" />
 
     <text
      type="string"
@@ -278,7 +286,7 @@
      name="allow_group_label"
      top_pad="10"
      width="200">
-        Allowed Groups:
+        Groups always allowed:
     </text>
     <text
      type="string"
@@ -290,10 +298,10 @@
      name="ban_resident_label"
      top_delta="0"
      width="200">
-        Banned Residents:
+        Always banned:
     </text>
 
-    <!-- Allowed Groups box -->
+    <!-- Groups always allowed box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -301,7 +309,7 @@
      layout="topleft"
      left="10"
      top_pad="-5"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -310,9 +318,9 @@
      multi_select="true"
      name="allowed_group_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Banned Residents box -->
+    <!-- Always banned box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -320,7 +328,7 @@
      layout="topleft"
      left="280"
      top_delta="0"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -329,9 +337,9 @@
      multi_select="true"
      name="banned_avatar_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Allowed Groups buttons -->
+    <!-- Groups always allowed buttons -->
     <button
      follows="left|top"
      height="23"
@@ -340,7 +348,7 @@
      left="10"
      name="add_allowed_group_btn"
      top_pad="6"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -349,9 +357,9 @@
      name="remove_allowed_group_btn"
      left_pad="6"
      top_delta="0"
-     width="97" />
+     width="114" />
 
-    <!-- Banned Residents buttons -->
+    <!-- Always banned buttons -->
     <button
      follows="left|top"
      height="23"
@@ -360,7 +368,7 @@
      left="280"
      name="add_banned_avatar_btn"
      top_delta="0"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -369,7 +377,7 @@
      name="remove_banned_avatar_btn"
      top_delta="0"
      left_pad="6"
-     width="97" />
+     width="114" />
 
     <button
      follows="left|top"
@@ -379,7 +387,7 @@
      left="10"
      name="message_estate_btn"
      top_pad="20"
-     width="220" />
+     width="235" />
     <button
      follows="left|top"
      height="23"
@@ -388,6 +396,6 @@
      left="280"
      name="kick_user_from_estate_btn"
      top_delta="0"
-     width="220" />
+     width="235" />
 
 </panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b75f6317999..bbbf7e3ecdd 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2643,12 +2643,12 @@ This feature is currently in Beta. Please add your name to this [http://goo.gl/f
 	<string name="RegionInfoAllEstatesYouManage">
 		all estates that you manage for [OWNER]
 	</string>
-	<string name="RegionInfoAllowedResidents">Allowed Residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
-	<string name="RegionInfoAllowedGroups">Allowed Groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
+	<string name="RegionInfoAllowedResidents">Always allowed: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
+	<string name="RegionInfoAllowedGroups">Groups always allowed: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
 	<string name="RegionInfoEstateManagers">Estate Managers: ([ESTATEMANAGERS], max [MAXMANAGERS])</string>
-	<string name="RegionInfoBannedResidents">Banned Residents: ([BANNEDAGENTS], max [MAXBANNED])</string>
-	<string name="RegionInfoListTypeAllowedAgents">Allowed Residents</string>
-	<string name="RegionInfoListTypeBannedAgents">Banned Residents</string>
+	<string name="RegionInfoBannedResidents">Always banned: ([BANNEDAGENTS], max [MAXBANNED])</string>
+	<string name="RegionInfoListTypeAllowedAgents">Always allowed</string>
+	<string name="RegionInfoListTypeBannedAgents">Always banned</string>
 
 	<!-- script limits floater -->
 	<string name="ScriptLimitsParcelScriptMemory">Parcel Script Memory</string>
-- 
GitLab