diff --git a/indra/llui/fsregistrarutils.h b/indra/llui/fsregistrarutils.h
index ce6d73bc27..976a6f49d6 100644
--- a/indra/llui/fsregistrarutils.h
+++ b/indra/llui/fsregistrarutils.h
@@ -37,7 +37,8 @@ enum EFSRegistrarFunctionActionType
FS_RGSTR_ACT_OFFER_TELEPORT,
FS_RGSTR_ACT_SHOW_PROFILE,
FS_RGSTR_ACT_TRACK_AVATAR,
- FS_RGSTR_ACT_TELEPORT_TO
+ FS_RGSTR_ACT_TELEPORT_TO,
+ FS_RGSTR_ACT_REQUEST_TELEPORT
};
class FSRegistrarUtils
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index eb53269124..2f4ff2b4e9 100755
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1914,6 +1914,7 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
registrar.add("FS.ZoomIn", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/zoom"));
registrar.add("FS.TeleportToTarget", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/teleportto"));
registrar.add("FS.OfferTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/offerteleport"));
+ registrar.add("FS.RequestTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/requestteleport"));
registrar.add("FS.TrackAvatar", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/track"));
registrar.add("FS.AddToContactSet", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + id + "/addtocontactset")); // [FS:CR]
// Additional convenience options
@@ -1928,6 +1929,7 @@ BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
enable_registrar.add("FS.EnableOfferTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_OFFER_TELEPORT));
enable_registrar.add("FS.EnableTrackAvatar", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_TRACK_AVATAR));
enable_registrar.add("FS.EnableTeleportToTarget", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_TELEPORT_TO));
+ enable_registrar.add("FS.EnableRequestTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, uuid, FS_RGSTR_ACT_REQUEST_TELEPORT));
//
// create the context menu from the XUI file and display it
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 3d0632452b..740a03579c 100755
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2057,6 +2057,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)
registrar.add("FS.ZoomIn", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/zoom"));
registrar.add("FS.TeleportToTarget", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/teleportto"));
registrar.add("FS.OfferTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/offerteleport"));
+ registrar.add("FS.RequestTeleport", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/requestteleport"));
registrar.add("FS.TrackAvatar", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/track"));
registrar.add("FS.AddToContactSet", boost::bind(&LLUrlAction::executeSLURL, "secondlife:///app/firestorm/" + target_id_str + "/addtocontactset")); // [FS:CR]
//
@@ -2072,6 +2073,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)
enable_registrar.add("FS.EnableOfferTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_OFFER_TELEPORT));
enable_registrar.add("FS.EnableTrackAvatar", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_TRACK_AVATAR));
enable_registrar.add("FS.EnableTeleportToTarget", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_TELEPORT_TO));
+ enable_registrar.add("FS.EnableRequestTeleport", boost::bind(&FSRegistrarUtils::checkIsEnabled, gFSRegistrarUtils, target_id, FS_RGSTR_ACT_REQUEST_TELEPORT));
//
// create and return the context menu from the XUI file
diff --git a/indra/newview/fschathistory.cpp b/indra/newview/fschathistory.cpp
index c667369140..919efd3033 100644
--- a/indra/newview/fschathistory.cpp
+++ b/indra/newview/fschathistory.cpp
@@ -206,6 +206,10 @@ public:
{
LLAvatarActions::offerTeleport(getAvatarId());
}
+ else if (level == "request_teleport")
+ {
+ LLAvatarActions::teleportRequest(getAvatarId());
+ }
else if (level == "voice_call")
{
LLAvatarActions::startCall(getAvatarId());
@@ -276,62 +280,10 @@ public:
{
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat);
}
- else if (level == "is_muted")
+ if (level == "is_muted")
{
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat);
}
- else if (level == "can_view_profile")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_SHOW_PROFILE);
- }
- else if (level == "can_im")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_SEND_IM);
- }
- else if (level == "can_offer_teleport")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_OFFER_TELEPORT);
- }
- else if (level == "can_teleport_to")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_TELEPORT_TO);
- }
- else if (level == "can_voice_call")
- {
- return (gAgentID != getAvatarId() && LLAvatarActions::canCall());
- }
- else if (level == "can_show_history")
- {
- return (gAgentID != getAvatarId());
- }
- else if (level == "can_zoom_in")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_ZOOM_IN);
- }
- else if (level == "can_track")
- {
- return FSCommon::checkIsActionEnabled(getAvatarId(), FS_RGSTR_ACT_TRACK_AVATAR);
- }
- else if (level == "can_share")
- {
- return (gAgentID != getAvatarId());
- }
- else if (level == "can_pay")
- {
- return (gAgentID != getAvatarId());
- }
- else if (level == "can_block")
- {
- return (gAgentID != getAvatarId());
- }
- else if (level == "can_mute")
- {
- return (gAgentID != getAvatarId());
- }
- else if (level == "can_invite_to_group")
- {
- return (gAgentID != getAvatarId());
- }
return false;
}
@@ -689,13 +641,35 @@ protected:
menu->setItemEnabled("Add Friend", false);
menu->setItemEnabled("Send IM", false);
menu->setItemEnabled("Remove Friend", false);
+ menu->setItemEnabled("Offer Teleport",false);
+ menu->setItemEnabled("Request Teleport",false);
+ menu->setItemEnabled("Teleport to",false);
+ menu->setItemEnabled("Voice Call", false);
+ menu->setItemEnabled("Add Contact Set", false);
+ menu->setItemEnabled("Invite Group", false);
+ menu->setItemEnabled("Zoom In", false);
+ menu->setItemEnabled("track", false);
+ menu->setItemEnabled("Share", false);
+ menu->setItemEnabled("Pay", false);
+ menu->setItemEnabled("Block Unblock", false);
+ menu->setItemEnabled("Mute Text", false);
}
-
- if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+ else
{
- menu->setItemVisible("Send IM", false);
+ menu->setItemEnabled("Send IM", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_SEND_IM));
+ menu->setItemEnabled("Show Profile", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_SHOW_PROFILE));
+ menu->setItemEnabled("Teleport to", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_TELEPORT_TO));
+ menu->setItemEnabled("Offer Teleport", LLAvatarActions::canOfferTeleport(mAvatarID));
+ menu->setItemEnabled("Request Teleport", LLAvatarActions::canOfferTeleport(mAvatarID));
+ menu->setItemEnabled("Voice Call", LLAvatarActions::canCall());
+ menu->setItemEnabled("Zoom In", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_ZOOM_IN));
+ menu->setItemEnabled("track", FSCommon::checkIsActionEnabled(mAvatarID, FS_RGSTR_ACT_TRACK_AVATAR));
+ menu->setItemEnabled("Block Unblock", LLAvatarActions::canBlock(mAvatarID));
+ menu->setItemEnabled("Mute Text", LLAvatarActions::canBlock(mAvatarID));
}
+ menu->setItemEnabled("Chat History", LLLogChat::isTranscriptExist(mAvatarID));
+ menu->setItemEnabled("Map", (LLAvatarTracker::instance().isBuddyOnline(mAvatarID) && is_agent_mappable(mAvatarID)) || gAgent.isGodlike() );
menu->buildDrawLabels();
menu->updateParent(LLMenuGL::sMenuContainer);
LLMenuGL::showPopup(this, menu, x, y);
diff --git a/indra/newview/fscommon.cpp b/indra/newview/fscommon.cpp
index 46824df432..4673263a29 100644
--- a/indra/newview/fscommon.cpp
+++ b/indra/newview/fscommon.cpp
@@ -318,7 +318,7 @@ bool FSCommon::checkIsActionEnabled(const LLUUID& av_id, EFSRegistrarFunctionAct
{
return (!isSelf && LLAvatarActions::canZoomIn(av_id));
}
- else if (action == FS_RGSTR_ACT_OFFER_TELEPORT)
+ else if (action == FS_RGSTR_ACT_OFFER_TELEPORT || action == FS_RGSTR_ACT_REQUEST_TELEPORT)
{
return (!isSelf && LLAvatarActions::canOfferTeleport(av_id));
}
diff --git a/indra/newview/fsslurlcommand.cpp b/indra/newview/fsslurlcommand.cpp
index 7e92ae06e8..030d034591 100644
--- a/indra/newview/fsslurlcommand.cpp
+++ b/indra/newview/fsslurlcommand.cpp
@@ -80,6 +80,16 @@ public:
return true;
}
+ if (verb == "requestteleport")
+ {
+ if (gAgentID != target_id)
+ {
+ LLAvatarActions::teleportRequest(target_id);
+ }
+
+ return true;
+ }
+
if (verb == "teleportto")
{
if (gAgentID != target_id)
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
index 94abe693a3..4fae4ac983 100755
--- a/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_icon.xml
@@ -15,7 +15,6 @@
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/default/xui/en/menu_url_agent.xml b/indra/newview/skins/default/xui/en/menu_url_agent.xml
index f4fbf66b99..30c3262034 100755
--- a/indra/newview/skins/default/xui/en/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/en/menu_url_agent.xml
@@ -66,6 +66,15 @@
+
+
+
+