diff options
| author | Oz Linden <oz@lindenlab.com> | 2013-07-29 15:19:54 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2013-07-29 15:19:54 -0400 | 
| commit | 91f7d0d1540ae448b45d8eceacff8aad2b88462a (patch) | |
| tree | 2f7b7505be398189252a7d2148869c81268ebc6d /indra | |
| parent | de3d3cf8aac904e0afda356d14af61b44cdb5fb7 (diff) | |
| parent | 8a761f92275a853fce28cf19ea628acdce840779 (diff) | |
merge changes for storm-1838
Diffstat (limited to 'indra')
19 files changed, 314 insertions, 59 deletions
| diff --git a/indra/llmessage/llinstantmessage.h b/indra/llmessage/llinstantmessage.h index db4a38ea9e..f7118f8ccf 100755 --- a/indra/llmessage/llinstantmessage.h +++ b/indra/llmessage/llinstantmessage.h @@ -126,7 +126,7 @@ enum EInstantMessage  	IM_LURE_ACCEPTED = 23,  	IM_LURE_DECLINED = 24,  	IM_GODLIKE_LURE_USER = 25, -	IM_YET_TO_BE_USED = 26, +	IM_TELEPORT_REQUEST = 26,  	// IM that notifie of a new group election.  	// Name is name of person who called vote. diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index b513a52ff7..5f1f57f550 100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -73,6 +73,8 @@  #include "llcallingcard.h"  #include "llslurl.h"			// IDEVO  #include "llsidepanelinventory.h" +#include "llavatarname.h" +#include "llagentui.h"  // static  void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::string& name) @@ -391,6 +393,65 @@ void LLAvatarActions::pay(const LLUUID& id)  	}  } +void LLAvatarActions::teleport_request_callback(const LLSD& notification, const LLSD& response) +{ +	S32 option; +	if (response.isInteger())  +	{ +		option = response.asInteger(); +	} +	else +	{ +		option = LLNotificationsUtil::getSelectedOption(notification, response); +	} + +	if (0 == option) +	{ +		LLMessageSystem* msg = gMessageSystem; + +		msg->newMessageFast(_PREHASH_ImprovedInstantMessage); +		msg->nextBlockFast(_PREHASH_AgentData); +		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); +		msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + +		msg->nextBlockFast(_PREHASH_MessageBlock); +		msg->addBOOLFast(_PREHASH_FromGroup, FALSE); +		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); +		msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary + +		std::string name; +		LLAgentUI::buildFullname(name); + +		msg->addStringFast(_PREHASH_FromAgentName, name); +		msg->addStringFast(_PREHASH_Message, response["message"]); +		msg->addU32Fast(_PREHASH_ParentEstateID, 0); +		msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); +		msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); + +		gMessageSystem->addBinaryDataFast( +				_PREHASH_BinaryBucket, +				EMPTY_BINARY_BUCKET, +				EMPTY_BINARY_BUCKET_SIZE); + +		gAgent.sendReliableMessage(); +	} +} + +// static +void LLAvatarActions::teleportRequest(const LLUUID& id) +{ +	LLSD notification; +	notification["uuid"] = id; +	notification["NAME_SLURL"] =  LLSLURL("agent", id, "about").getSLURLString(); + +	LLSD payload; + +	LLNotificationsUtil::add("TeleportRequestPrompt", notification, payload, teleport_request_callback); +} +  // static  void LLAvatarActions::kick(const LLUUID& id)  { diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 6e1198cd09..403414558e 100755 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -111,6 +111,12 @@ public:  	static void pay(const LLUUID& id);  	/** +	 * 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.  	 */  	static void share(const LLUUID& id); diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 88884042d4..131aea9da3 100755 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -220,18 +220,25 @@ void LLNotificationChiclet::setCounter(S32 counter)  bool LLNotificationChiclet::ChicletNotificationChannel::filterNotification( LLNotificationPtr notification )  { -	if (notification->getName() == "ScriptDialog") +	bool displayNotification; +	if (   (notification->getName() == "ScriptDialog") // special case for scripts +		// if there is no toast window for the notification, filter it +		|| (!LLNotificationWellWindow::getInstance()->findItemByID(notification->getID())) +		)  	{ -		return false; +		displayNotification = false;  	} - -	if( !(notification->canLogToIM() && notification->hasFormElements()) -		&& (!notification->getPayload().has("give_inventory_notification") -			|| notification->getPayload()["give_inventory_notification"])) +	else if( !(notification->canLogToIM() && notification->hasFormElements()) +			&& (!notification->getPayload().has("give_inventory_notification") +				|| notification->getPayload()["give_inventory_notification"]))  	{ -		return true; +		displayNotification = true;  	} -	return false; +	else +	{ +		displayNotification = false; +	} +	return displayNotification;  }  ////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llconversationloglist.cpp b/indra/newview/llconversationloglist.cpp index 5ab108b39f..44212298cf 100755 --- a/indra/newview/llconversationloglist.cpp +++ b/indra/newview/llconversationloglist.cpp @@ -313,6 +313,10 @@ void LLConversationLogList::onCustomAction(const LLSD& userdata)  	{  		LLAvatarActions::offerTeleport(selected_conversation_participant_id);  	} +	else if ("request_teleport" == command_name) +	{ +		LLAvatarActions::teleportRequest(selected_conversation_participant_id); +	}  	else if("add_friend" == command_name)  	{  		if (!LLAvatarActions::isFriend(selected_conversation_participant_id)) diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index c74ce24872..b0aaa21ec9 100755 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -132,6 +132,7 @@ void LLConversationItem::buildParticipantMenuOptions(menuentry_vec_t& items, U32  		items.push_back(std::string("view_profile"));  		items.push_back(std::string("im"));  		items.push_back(std::string("offer_teleport")); +		items.push_back(std::string("request_teleport"));  		items.push_back(std::string("voice_call"));  		items.push_back(std::string("chat_history"));  		items.push_back(std::string("separator_chat_history")); diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index b40789db9c..1fbe1be11a 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1046,6 +1046,10 @@ void LLFloaterIMContainer::doToParticipants(const std::string& command, uuid_vec  		{  			LLAvatarActions::offerTeleport(selectedIDS);  		} +		else if ("request_teleport" == command) +		{ +			LLAvatarActions::teleportRequest(selectedIDS.front()); +		}  		else if ("voice_call" == command)  		{  			LLAvatarActions::startCall(userID); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index a5043a30ac..0298ea1785 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -4739,6 +4739,16 @@ void LLCallingCardBridge::performAction(LLInventoryModel* model, std::string act  			LLAvatarActions::offerTeleport(item->getCreatorUUID());  		}  	} +	else if ("request_lure" == action) +	{ +		LLViewerInventoryItem *item = getItem(); +		if (item && (item->getCreatorUUID() != gAgent.getID()) && +			(!item->getCreatorUUID().isNull())) +		{ +			LLAvatarActions::teleportRequest(item->getCreatorUUID()); +		} +	} +  	else LLItemBridge::performAction(model, action);  } @@ -4825,6 +4835,7 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		items.push_back(std::string("Send Instant Message Separator"));  		items.push_back(std::string("Send Instant Message"));  		items.push_back(std::string("Offer Teleport...")); +		items.push_back(std::string("Request Teleport..."));  		items.push_back(std::string("Conference Chat"));  		if (!good_card) @@ -4834,6 +4845,7 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		if (!good_card || !user_online)  		{  			disabled_items.push_back(std::string("Offer Teleport...")); +			disabled_items.push_back(std::string("Request Teleport..."));  			disabled_items.push_back(std::string("Conference Chat"));  		}  	} diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index 08c98e4f28..56ed1044e9 100755 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -87,7 +87,7 @@ bool LLScriptHandler::processNotification(const LLNotificationPtr& notification)  	{  		LLScriptFloaterManager::getInstance()->onAddNotification(notification->getID());  	} -	else +	else if (notification->canShowToast())  	{  		LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 49f7361c4a..0b2bf1d2c8 100755 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -74,6 +74,7 @@ LLContextMenu* PeopleContextMenu::createMenu()  		registrar.add("Avatar.Pay",				boost::bind(&LLAvatarActions::pay,						id));  		registrar.add("Avatar.BlockUnblock",	boost::bind(&LLAvatarActions::toggleBlock,				id));  		registrar.add("Avatar.InviteToGroup",	boost::bind(&LLAvatarActions::inviteToGroup,			id)); +		registrar.add("Avatar.TeleportRequest",	boost::bind(&PeopleContextMenu::requestTeleport,		this));  		registrar.add("Avatar.Calllog",			boost::bind(&LLAvatarActions::viewChatHistory,			id));  		enable_registrar.add("Avatar.EnableItem", boost::bind(&PeopleContextMenu::enableContextMenuItem, this, _2)); @@ -125,6 +126,7 @@ void PeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags)  		items.push_back(std::string("view_profile"));  		items.push_back(std::string("im"));  		items.push_back(std::string("offer_teleport")); +		items.push_back(std::string("request_teleport"));  		items.push_back(std::string("voice_call"));  		items.push_back(std::string("chat_history"));  		items.push_back(std::string("separator_chat_history")); @@ -255,6 +257,13 @@ bool PeopleContextMenu::checkContextMenuItem(const LLSD& userdata)  	return false;  } +void PeopleContextMenu::requestTeleport() +{ +	// boost::bind cannot recognize overloaded method LLAvatarActions::teleportRequest(), +	// so we have to use a wrapper. +	LLAvatarActions::teleportRequest(mUUIDs.front()); +} +  void PeopleContextMenu::offerTeleport()  {  	// boost::bind cannot recognize overloaded method LLAvatarActions::offerTeleport(), @@ -284,6 +293,7 @@ void NearbyPeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags)  		items.push_back(std::string("view_profile"));  		items.push_back(std::string("im"));  		items.push_back(std::string("offer_teleport")); +		items.push_back(std::string("request_teleport"));  		items.push_back(std::string("voice_call"));  		items.push_back(std::string("chat_history"));  		items.push_back(std::string("separator_chat_history")); diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 0a1dcef303..abf5fa05e4 100755 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -47,6 +47,7 @@ private:  	bool enableContextMenuItem(const LLSD& userdata);  	bool checkContextMenuItem(const LLSD& userdata);  	void offerTeleport(); +	void requestTeleport();  };  /** diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index e92bd766ca..4846c54189 100755 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -118,6 +118,11 @@ void LLSysWellWindow::removeItemByID(const LLUUID& id)  	}  } + LLPanel * LLSysWellWindow::findItemByID(const LLUUID& id) +{ +       return mMessageList->getItemByValue(id); +} +  //---------------------------------------------------------------------------------  //---------------------------------------------------------------------------------  void LLSysWellWindow::initChannel()  diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index cc5c057d8b..71b41476f5 100755 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -55,6 +55,7 @@ public:  	// Operating with items  	void removeItemByID(const LLUUID& id); +	LLPanel * findItemByID(const LLUUID& id);  	// Operating with outfit  	virtual void setVisible(BOOL visible); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ace16396db..acb384834e 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2216,7 +2216,7 @@ static std::string clean_name_from_im(const std::string& name, EInstantMessage t  	case IM_LURE_ACCEPTED:  	case IM_LURE_DECLINED:  	case IM_GODLIKE_LURE_USER: -	case IM_YET_TO_BE_USED: +	case IM_TELEPORT_REQUEST:  	case IM_GROUP_ELECTION_DEPRECATED:  	//IM_GOTO_URL  	//IM_FROM_TASK_AS_ALERT @@ -2981,6 +2981,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  		break;  	case IM_LURE_USER: +	case IM_TELEPORT_REQUEST:  		{  			if (is_muted)  			{  @@ -3003,7 +3004,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				bool canUserAccessDstRegion = true;  				bool doesUserRequireMaturityIncrease = false; -				if (parse_lure_bucket(region_info, region_handle, pos, look_at, region_access)) +				// Do not parse the (empty) lure bucket for TELEPORT_REQUEST +				if (IM_TELEPORT_REQUEST != dialog && parse_lure_bucket(region_info, region_handle, pos, look_at, region_access))  				{  					region_access_str = LLViewerRegion::accessToString(region_access);  					region_access_icn = LLViewerRegion::getAccessIcon(region_access); @@ -3075,12 +3077,22 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				}  				else  				{ -			    LLNotification::Params params("TeleportOffered"); +					LLNotification::Params params; +					if (IM_LURE_USER == dialog) +					{ +						params.name = "TeleportOffered"; +						params.functor.name = "TeleportOffered"; +					} +					else if (IM_TELEPORT_REQUEST == dialog) +					{ +						params.name = "TeleportRequest"; +						params.functor.name = "TeleportRequest"; +					} +  			    params.substitutions = args;  			    params.payload = payload;  			    LLPostponedNotification::add<LLPostponedOfferNotification>(	params, from_id, false);  			} -  			}  		}  		break; @@ -6851,6 +6863,51 @@ void send_group_notice(const LLUUID& group_id,  			bin_bucket_size);  } +void send_lures(const LLSD& notification, const LLSD& response) +{ +	std::string text = response["message"].asString(); +	LLSLURL slurl; +	LLAgentUI::buildSLURL(slurl); +	text.append("\r\n").append(slurl.getSLURLString()); + +	LLMessageSystem* msg = gMessageSystem; +	msg->newMessageFast(_PREHASH_StartLure); +	msg->nextBlockFast(_PREHASH_AgentData); +	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); +	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); +	msg->nextBlockFast(_PREHASH_Info); +	msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in. +	msg->addStringFast(_PREHASH_Message, text); +	for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray(); +		it != notification["payload"]["ids"].endArray(); +		++it) +	{ +		LLUUID target_id = it->asUUID(); + +		msg->nextBlockFast(_PREHASH_TargetData); +		msg->addUUIDFast(_PREHASH_TargetID, target_id); + +		// Record the offer. +		{ +			std::string target_name; +			gCacheName->getFullName(target_id, target_name);  // for im log filenames +			LLSD args; +			args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();; +	 +			LLSD payload; +				 +			//*TODO please rewrite all keys to the same case, lower or upper +			payload["from_id"] = target_id; +			payload["SUPPRESS_TOAST"] = true; +			LLNotificationsUtil::add("TeleportOfferSent", args, payload); + +			// Add the recepient to the recent people list. +			LLRecentPeople::instance().add(target_id); +		} +	} +	gAgent.sendReliableMessage(); +} +  bool handle_lure_callback(const LLSD& notification, const LLSD& response)  {  	static const unsigned OFFER_RECIPIENT_LIMIT = 250; @@ -6864,50 +6921,12 @@ bool handle_lure_callback(const LLSD& notification, const LLSD& response)  		LLNotificationsUtil::add("TooManyTeleportOffers", args);  		return false;  	} -	 -	std::string text = response["message"].asString(); -	LLSLURL slurl; -	LLAgentUI::buildSLURL(slurl); -	text.append("\r\n").append(slurl.getSLURLString()); +  	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);  	if(0 == option)  	{ -		LLMessageSystem* msg = gMessageSystem; -		msg->newMessageFast(_PREHASH_StartLure); -		msg->nextBlockFast(_PREHASH_AgentData); -		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); -		msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); -		msg->nextBlockFast(_PREHASH_Info); -		msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in. -		msg->addStringFast(_PREHASH_Message, text); -		for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray(); -			it != notification["payload"]["ids"].endArray(); -			++it) -		{ -			LLUUID target_id = it->asUUID(); - -			msg->nextBlockFast(_PREHASH_TargetData); -			msg->addUUIDFast(_PREHASH_TargetID, target_id); - -			// Record the offer. -			{ -				std::string target_name; -				gCacheName->getFullName(target_id, target_name);  // for im log filenames -				LLSD args; -				args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();; -	 -				LLSD payload; -				 -				//*TODO please rewrite all keys to the same case, lower or upper -				payload["from_id"] = target_id; -				LLNotificationsUtil::add("TeleportOfferSent", args, payload); - -				// Add the recepient to the recent people list. -				LLRecentPeople::instance().add(target_id); -			} -		} -		gAgent.sendReliableMessage(); +		send_lures(notification, response);  	}  	return false; @@ -6947,6 +6966,58 @@ void handle_lure(const uuid_vec_t& ids)  	}  } +bool teleport_request_callback(const LLSD& notification, const LLSD& response) +{ +	LLUUID from_id = notification["payload"]["from_id"].asUUID(); +	if(from_id.isNull()) +	{ +		llwarns << "from_id is NULL" << llendl; +		return false; +	} + +	std::string from_name; +	gCacheName->getFullName(from_id, from_name); + +	if(LLMuteList::getInstance()->isMuted(from_id) && !LLMuteList::getInstance()->isLinden(from_name)) +	{ +		return false; +	} + +	S32 option = 0; +	if (response.isInteger())  +	{ +		option = response.asInteger(); +	} +	else +	{ +		option = LLNotificationsUtil::getSelectedOption(notification, response); +	} + +	switch(option) +	{ +	// Yes +	case 0: +		{ +			LLSD dummy_notification; +			dummy_notification["payload"]["ids"][0] = from_id; + +			LLSD dummy_response; +			dummy_response["message"] = response["message"]; + +			send_lures(dummy_notification, dummy_response); +		} +		break; + +	// No +	case 1: +	default: +		break; +	} + +	return false; +} + +static LLNotificationFunctorRegistration teleport_request_callback_reg("TeleportRequest", teleport_request_callback);  void send_improved_im(const LLUUID& to_id,  							const std::string& name, diff --git a/indra/newview/skins/default/xui/en/menu_conversation.xml b/indra/newview/skins/default/xui/en/menu_conversation.xml index 5a13ef0a59..d8eb2f0ffd 100755 --- a/indra/newview/skins/default/xui/en/menu_conversation.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation.xml @@ -47,6 +47,13 @@          <on_enable function="Avatar.EnableItem" parameter="can_offer_teleport"/>      </menu_item_call>      <menu_item_call +     label="Request teleport" +     layout="topleft" +     name="request_teleport"> +        <on_click function="Avatar.DoToSelected" parameter="request_teleport"/> +        <on_enable function="Avatar.EnableItem" parameter="can_offer_teleport"/> +    </menu_item_call> +    <menu_item_call       label="Voice call"       layout="topleft"       name="voice_call"> diff --git a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml index 8796b87955..a1a3afbf68 100755 --- a/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_conversation_log_gear.xml @@ -56,6 +56,16 @@        function="Calllog.Enable"        parameter="can_offer_teleport"/>      </menu_item_call> +    <menu_item_call +    label="Request Teleport" +    name="request_teleport"> +      <on_click +       function="Calllog.Action" +       parameter="request_teleport"/> +      <on_enable +      function="Calllog.Enable" +      parameter="can_offer_teleport"/> +    </menu_item_call>      <menu_item_separator />      <menu_item_call       label="Add Friend" diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 13dc0b941a..512205ba43 100755 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -591,6 +591,14 @@           parameter="lure" />      </menu_item_call>      <menu_item_call +     label="Request Teleport..." +     layout="topleft" +     name="Request Teleport..."> +        <menu_item_call.on_click +        function="Inventory.DoToSelected" +        parameter="request_lure" /> +    </menu_item_call> +    <menu_item_call       label="Start Conference Chat"       layout="topleft"       name="Conference Chat"> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index 3abb5f7bc8..f12226ebeb 100755 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -29,6 +29,15 @@        parameter="can_offer_teleport"/>      </menu_item_call>      <menu_item_call +    label="Request Teleport" +    name="request_teleport"> +      <menu_item_call.on_click +       function="Avatar.TeleportRequest"/> +      <menu_item_call.on_enable +      function="Avatar.EnableItem" +      parameter="can_offer_teleport"/> +    </menu_item_call> +    <menu_item_call       label="Voice call"       layout="topleft"       name="voice_call"> @@ -134,5 +143,4 @@           function="Avatar.EnableItem"           parameter="can_block" />      </menu_item_check> -    <menu_item_separator />  </context_menu> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9e582cf0de..32635e4540 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4033,6 +4033,27 @@ Join me in [REGION]    <notification     icon="alertmodal.tga" +   name="TeleportRequestPrompt" +   type="alertmodal"> +Request a teleport to [NAME_SLURL] 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 @@ -6601,7 +6622,7 @@ Your object named <nolink>[OBJECTFROMNAME]</nolink> has given you th     sound="UISndNewIncomingIMSession">  [NAME_SLURL] has offered to teleport you to their location: -“[MESSAGE]” +"[MESSAGE]”  <icon>[MATURITY_ICON]</icon> - [MATURITY_STR]      <tag>confirm</tag>      <form name="form"> @@ -6666,6 +6687,27 @@ However, this region contains content accessible to adults only.  	Teleport offer sent to [TO_NAME]    </notification> +  <notification +   icon="notify.tga" +   name="TeleportRequest" +   log_to_im="true" +   type="offer"> +[NAME_SLURL] is requesting to be teleported to your location. +[MESSAGE] + +Offer a teleport? +    <tag>confirm</tag> +    <form name="form"> +      <button +       index="0" +       name="Yes" +       text="Yes"/> +      <button +       index="1" +       name="No" +       text="No"/> +    </form> +  </notification>    <notification     icon="notify.tga" @@ -6714,7 +6756,6 @@ However, this region contains content accessible to adults only.     icon="notify.tga"     name="FriendshipOffered"     log_to_im="true"    -   show_toast="false"        type="notify">      <tag>friendship</tag>  	You have offered friendship to [TO_NAME] @@ -6764,7 +6805,6 @@ However, this region contains content accessible to adults only.     icon="notify.tga"     name="FriendshipAcceptedByMe"     log_to_im="true"    -   show_toast="false"     type="notify">      <tag>friendship</tag>  Friendship offer accepted. @@ -6774,7 +6814,6 @@ Friendship offer accepted.     icon="notify.tga"     name="FriendshipDeclinedByMe"     log_to_im="true"    -   show_toast="false"        type="notify">      <tag>friendship</tag>  Friendship offer declined. | 
