diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llurlentry.cpp | 29 | ||||
| -rw-r--r-- | indra/llui/tests/llurlentry_test.cpp | 26 | 
2 files changed, 46 insertions, 9 deletions
| diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index e8e3459673..c38e38c900 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -41,6 +41,9 @@  #include "lltrans.h"  #include "lluicolortable.h" +#define APP_HEADER_REGEX "((x-grid-location-info://[-\\w\\.]+/app)|(secondlife:///app))" + +  LLUrlEntryBase::LLUrlEntryBase() :  	mColor(LLUIColorTable::instance().getColor("HTMLLinkColor")),  	mDisabledLink(false) @@ -303,10 +306,11 @@ std::string LLUrlEntrySLURL::getLocation(const std::string &url) const  //  // LLUrlEntryAgent Describes a Second Life agent Url, e.g.,  // secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about +// x-grid-location-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about  //  LLUrlEntryAgent::LLUrlEntryAgent()  { -	mPattern = boost::regex("secondlife:///app/agent/[\\da-f-]+/\\w+", +	mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/\\w+",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_agent.xml";  	mIcon = "Generic_Person"; @@ -418,10 +422,11 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa  // LLUrlEntryGroup Describes a Second Life group Url, e.g.,  // secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about  // secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect +// x-grid-location-info://lincoln.lindenlab.com/app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/inspect  //  LLUrlEntryGroup::LLUrlEntryGroup()  { -	mPattern = boost::regex("secondlife:///app/group/[\\da-f-]+/\\w+", +	mPattern = boost::regex(APP_HEADER_REGEX "/group/[\\da-f-]+/\\w+",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_group.xml";  	mIcon = "Generic_Group"; @@ -482,7 +487,8 @@ LLUrlEntryInventory::LLUrlEntryInventory()  	//*TODO: add supporting of inventory item names with whitespaces  	//this pattern cann't parse for example   	//secondlife:///app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces¶m2=value -	mPattern = boost::regex("secondlife:///app/inventory/[\\da-f-]+/\\w+\\S*", +	//x-grid-location-info://lincoln.lindenlab.com/app/inventory/0e346d8b-4433-4d66-a6b0-fd37083abc4c/select?name=name with spaces¶m2=value +	mPattern = boost::regex(APP_HEADER_REGEX "/inventory/[\\da-f-]+/\\w+\\S*",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_inventory.xml";  } @@ -496,10 +502,11 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab  ///  /// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,  /// secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about +/// x-grid-location-info://lincoln.lindenlab.com/app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about  ///  LLUrlEntryParcel::LLUrlEntryParcel()  { -	mPattern = boost::regex("secondlife:///app/parcel/[\\da-f-]+/about", +	mPattern = boost::regex(APP_HEADER_REGEX "/parcel/[\\da-f-]+/about",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_parcel.xml";  	mTooltip = LLTrans::getString("TooltipParcelUrl"); @@ -515,7 +522,7 @@ std::string LLUrlEntryParcel::getLabel(const std::string &url, const LLUrlLabelC  //  LLUrlEntryPlace::LLUrlEntryPlace()  { -	mPattern = boost::regex("secondlife://\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?", +	mPattern = boost::regex("((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://))\\S+/?(\\d+/\\d+/\\d+|\\d+/\\d+)/?",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_slurl.xml";  	mTooltip = LLTrans::getString("TooltipSLURL"); @@ -560,10 +567,11 @@ std::string LLUrlEntryPlace::getLocation(const std::string &url) const  //  // LLUrlEntryTeleport Describes a Second Life teleport Url, e.g.,  // secondlife:///app/teleport/Ahern/50/50/50/ +// x-grid-location-info://lincoln.lindenlab.com/app/teleport/Ahern/50/50/50/  //  LLUrlEntryTeleport::LLUrlEntryTeleport()  { -	mPattern = boost::regex("secondlife:///app/teleport/\\S+(/\\d+)?(/\\d+)?(/\\d+)?/?\\S*", +	mPattern = boost::regex(APP_HEADER_REGEX "/teleport/\\S+(/\\d+)?(/\\d+)?(/\\d+)?/?\\S*",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_teleport.xml";  	mTooltip = LLTrans::getString("TooltipTeleportUrl"); @@ -581,7 +589,12 @@ std::string LLUrlEntryTeleport::getLabel(const std::string &url, const LLUrlLabe  	LLURI uri(url);  	LLSD path_array = uri.pathArray();  	S32 path_parts = path_array.size(); -	const std::string label = LLTrans::getString("SLurlLabelTeleport"); +	std::string host = uri.hostName(); +	std::string label = LLTrans::getString("SLurlLabelTeleport"); +	if (!host.empty()) +	{ +		label += " " + host; +	}  	if (path_parts == 6)  	{  		// handle teleport url with (X,Y,Z) coordinates @@ -680,7 +693,7 @@ std::string LLUrlEntrySLLabel::getTooltip(const std::string &string) const  //  LLUrlEntryWorldMap::LLUrlEntryWorldMap()  { -	mPattern = boost::regex("secondlife:///app/worldmap/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", +	mPattern = boost::regex(APP_HEADER_REGEX "/worldmap/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_map.xml";  	mTooltip = LLTrans::getString("TooltipMapUrl"); diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index cbb303a059..4463b6cc6f 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -286,6 +286,13 @@ namespace tut  				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",  				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar"); +		testRegex("Standalone Agent Url ", url, +				  "x-grid-location-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about", +				  "x-grid-location-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");		 + +		testRegex("Standalone Agent Url Multicase with Text", url, +				  "M x-grid-location-info://lincoln.lindenlab.com/app/AGENT/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about M", +				  "x-grid-location-info://lincoln.lindenlab.com/app/AGENT/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");		  	}  	template<> template<> @@ -315,6 +322,15 @@ namespace tut  		testRegex("Group Url multicase", url,  				  "XXX secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About XXX",  				  "secondlife:///APP/Group/00005FF3-4044-c79f-9de8-fb28ae0df991/About"); +		 +		testRegex("Standalone Group Url ", url, +				  "x-grid-location-info://lincoln.lindenlab.com/app/group/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about", +				  "x-grid-location-info://lincoln.lindenlab.com/app/group/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");		 +		 +		testRegex("Standalone Group Url Multicase ith Text", url, +				  "M x-grid-location-info://lincoln.lindenlab.com/app/GROUP/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about M", +				  "x-grid-location-info://lincoln.lindenlab.com/app/GROUP/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");		 +		  	}  	template<> template<> @@ -361,7 +377,11 @@ namespace tut  		// DEV-35459: SLURLs and teleport Links not parsed properly  		testRegex("SLURL with quote", url,  				  "XXX secondlife://A'ksha%20Oasis/41/166/701 XXX", -				  "secondlife://A%27ksha%20Oasis/41/166/701"); +			          "secondlife://A%27ksha%20Oasis/41/166/701"); +		 +		testRegex("Standalone All Hands (50,50) [2] with text", url, +				  "XXX x-grid-location-info://lincoln.lindenlab.com/region/All%20Hands/50/50/50 XXX", +				  "x-grid-location-info://lincoln.lindenlab.com/region/All%20Hands/50/50/50");		  	}  	template<> template<> @@ -461,6 +481,10 @@ namespace tut  		testRegex("Teleport url with quote", url,  				  "XXX secondlife:///app/teleport/A'ksha%20Oasis/41/166/701 XXX",  				  "secondlife:///app/teleport/A%27ksha%20Oasis/41/166/701"); +		 +		testRegex("Standalone All Hands", url, +				  "XXX x-grid-location-info://lincoln.lindenlab.com/app/teleport/All%20Hands/50/50/50 XXX", +				  "x-grid-location-info://lincoln.lindenlab.com/app/teleport/All%20Hands/50/50/50");		  	}  	template<> template<> | 
