summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/llavataractions.cpp17
-rw-r--r--indra/newview/llavataractions.h1
-rwxr-xr-xindra/newview/llviewermessage.cpp21
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml22
4 files changed, 48 insertions, 13 deletions
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 51313f29c4..d8449570a7 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -397,8 +397,7 @@ void LLAvatarActions::pay(const LLUUID& id)
}
}
-// static
-void LLAvatarActions::teleportRequest(const LLUUID& id)
+void LLAvatarActions::teleport_request_callback(const LLSD& notification, const LLSD& response)
{
LLMessageSystem* msg = gMessageSystem;
@@ -409,7 +408,7 @@ void LLAvatarActions::teleportRequest(const LLUUID& id)
msg->nextBlockFast(_PREHASH_MessageBlock);
msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
- msg->addUUIDFast(_PREHASH_ToAgentID, id);
+ msg->addUUIDFast(_PREHASH_ToAgentID, notification["substitutions"]["uuid"] );
msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
msg->addU8Fast(_PREHASH_Dialog, IM_TELEPORT_REQUEST);
msg->addUUIDFast(_PREHASH_ID, LLUUID::null);
@@ -419,7 +418,7 @@ void LLAvatarActions::teleportRequest(const LLUUID& id)
LLAgentUI::buildFullname(name);
msg->addStringFast(_PREHASH_FromAgentName, name);
- msg->addStringFast(_PREHASH_Message, LLStringUtil::null);
+ msg->addStringFast(_PREHASH_Message, response["message"]);
msg->addU32Fast(_PREHASH_ParentEstateID, 0);
msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
@@ -434,6 +433,16 @@ llwarns << "DBG REQUEST_TELEPORT sent" << llendl;
}
// static
+void LLAvatarActions::teleportRequest(const LLUUID& id)
+{
+ LLSD notification;
+ notification["uuid"] = id;
+ LLSD payload;
+
+ LLNotificationsUtil::add("TeleportRequestPrompt", notification, payload, teleport_request_callback);
+}
+
+// static
void LLAvatarActions::kick(const LLUUID& id)
{
LLSD payload;
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index f3df953e98..afd8060ee3 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -112,6 +112,7 @@ public:
* Request teleport from other avatar
*/
static void teleportRequest(const LLUUID& id);
+ static void teleport_request_callback(const LLSD& notification, const LLSD& response);
/**
* Share items with the avatar.
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 8a955377da..7247dfcd65 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -6765,7 +6765,8 @@ bool handle_lure_callback(const LLSD& notification, const LLSD& response)
// Caution: this function is also called directly by teleport_request_callback using dummied-up parameters.
// If you make a change here that uses additional fields in notification or response
// make sure to add appropriate dummy values in teleport_request_callback.
-
+llwarns << "DBB notification=" << notification << llendl;
+llwarns << "DBG response=" << response << llendl;
static const unsigned OFFER_RECIPIENT_LIMIT = 250;
if(notification["payload"]["ids"].size() > OFFER_RECIPIENT_LIMIT)
{
@@ -6893,18 +6894,20 @@ bool teleport_request_callback(const LLSD& notification, const LLSD& response)
// Yes
case 0:
{
- LLSD notification;
- notification["payload"]["ids"] = from_id;
- notification["form"][0]["type"] = "button";
- notification["form"][0]["index"] = 0;
+ LLSD dummy_notification;
+ dummy_notification["payload"]["ids"][0] = from_id;
+ dummy_notification["form"]["name"][0] = "OK";
+ dummy_notification["form"]["text"][0] = "OK";
+ dummy_notification["form"]["type"][0] = "button";
- LLSD response;
- response["message"] = "Join me in ";
- response["name"][0] = 1;
+
+ LLSD dummy_response;
+ dummy_response["message"] = response["message"];
+ dummy_response["OK"] = 1;
// Calling handle_lure_callback directly is a bit of a hack to avoid having to copy most of
// the code from this routine.
- handle_lure_callback(notification, response);
+ handle_lure_callback(dummy_notification, dummy_response);
}
break;
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 0628e54902..3baf223172 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3929,6 +3929,27 @@ Join me in [REGION]
<notification
icon="alertmodal.tga"
+ name="TeleportRequestPrompt"
+ type="alertmodal">
+Request a teleport to their location with the following message
+ <tag>confirm</tag>
+ <form name="form">
+ <input name="message" type="text">
+
+ </input>
+ <button
+ default="true"
+ index="0"
+ name="OK"
+ text="OK"/>
+ <button
+ index="1"
+ name="Cancel"
+ text="Cancel"/>
+ </form>
+ </notification>
+ <notification
+ icon="alertmodal.tga"
name="TooManyTeleportOffers"
type="alertmodal">
You attempted to make [OFFERS] teleport offers
@@ -6520,6 +6541,7 @@ However, this region contains content accessible to adults only.
name="TeleportRequest"
type="notify">
[NAME_SLURL] is requesting to be teleported your to your location.
+[MESSAGE]
Will you permit this?
<tag>confirm</tag>