diff options
| -rwxr-xr-x | indra/newview/llagent.cpp | 3 | ||||
| -rwxr-xr-x | indra/newview/llfloaterperms.cpp | 3 | ||||
| -rwxr-xr-x | indra/newview/llviewerinventory.cpp | 99 | ||||
| -rwxr-xr-x | indra/newview/llviewerinventory.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewerregion.cpp | 1 | 
5 files changed, 88 insertions, 20 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7d2b4f6269..d210456993 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -898,9 +898,6 @@ void LLAgent::setRegion(LLViewerRegion *regionp)  			// Update all of the regions.  			LLWorld::getInstance()->updateAgentOffset(mAgentOriginGlobal); - -			// Send default object permissions to simulator -			LLFloaterPermsDefault::updateCap(false);  		}  		// Pass new region along to metrics components that care about this level of detail. diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index dc4969f5e6..4923420a3e 100755 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -175,15 +175,18 @@ public:  void LLFloaterPermsDefault::updateCap(bool alwaysUpdate)  { +llwarns << "DBG start" << llendl;  	if(!alwaysUpdate && mCapSent)  	{  		return;  	} +llwarns << "DBG getRegion" << llendl;  	std::string object_url = gAgent.getRegion()->getCapability("DefaultObjectPermissions");  	if(!object_url.empty())  	{ +llwarns << "DBG post" << llendl;  		LLSD report = LLSD::emptyMap();  		report["Group"] = (LLSD::Integer)LLFloaterPerms::getGroupPerms(sCategoryNames[CAT_OBJECTS]);  		report["Everyone"] = (LLSD::Integer)LLFloaterPerms::getEveryonePerms(sCategoryNames[CAT_OBJECTS]); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index fff9821e86..5e3df16c38 100755 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -65,6 +65,7 @@  #include "llavataractions.h"  #include "lllogininstance.h"  #include "llfavoritesbar.h" +#include "llfloaterperms.h"  // Two do-nothing ops for use in callbacks.  void no_op_inventory_func(const LLUUID&) {}  @@ -989,6 +990,24 @@ void activate_gesture_cb(const LLUUID& inv_item)  	LLGestureMgr::instance().activateGesture(inv_item);  } +void create_script_cb(const LLUUID& inv_item) +{ +	if (inv_item.isNull()) +		return; + +	LLViewerInventoryItem* item = gInventory.getItem(inv_item); +	if (!item) return; + +	LLPermissions perm = item->getPermissions(); +	perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Scripts")); +	perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Scripts")); + +	item->setPermissions(perm); + +	gInventory.updateItem(item); +	gInventory.notifyObservers(); +} +  void create_gesture_cb(const LLUUID& inv_item)  {  	if (inv_item.isNull()) @@ -998,6 +1017,13 @@ void create_gesture_cb(const LLUUID& inv_item)  	LLViewerInventoryItem* item = gInventory.getItem(inv_item);  	if (!item) return; + +	LLPermissions perm = item->getPermissions(); +	perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Gestures")); +	perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Gestures")); + +	item->setPermissions(perm); +      gInventory.updateItem(item);      gInventory.notifyObservers(); @@ -1007,6 +1033,24 @@ void create_gesture_cb(const LLUUID& inv_item)  } +void create_notecard_cb(const LLUUID& inv_item) +{ +	if (inv_item.isNull()) +		return; +	 +	LLViewerInventoryItem* item = gInventory.getItem(inv_item); +	if (!item) return; + +	LLPermissions perm = item->getPermissions(); +	perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Notecards")); +	perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Notecards")); + +	item->setPermissions(perm); + +	gInventory.updateItem(item); +	gInventory.notifyObservers(); +} +  LLInventoryCallbackManager gInventoryCallbacks;  void create_inventory_item(const LLUUID& agent_id, const LLUUID& session_id, @@ -1260,22 +1304,43 @@ void create_new_item(const std::string& name,  	LLViewerAssetType::generateDescriptionFor(asset_type, desc);  	next_owner_perm = (next_owner_perm) ? next_owner_perm : PERM_MOVE | PERM_TRANSFER; -	 -	if (inv_type == LLInventoryType::IT_GESTURE) -	{ -		LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(create_gesture_cb); -		create_inventory_item(gAgent.getID(), gAgent.getSessionID(), -							  parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, -							  NOT_WEARABLE, next_owner_perm, cb); -	} -	else +	LLPointer<LLInventoryCallback> cb = NULL; + +	switch (inv_type)  	{ -		LLPointer<LLInventoryCallback> cb = NULL; -		create_inventory_item(gAgent.getID(), gAgent.getSessionID(), -							  parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, -							  NOT_WEARABLE, next_owner_perm, cb); +		case LLInventoryType::IT_LSL: +		{ +			cb = new LLBoostFuncInventoryCallback(create_script_cb); +			next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Scripts"); +			break; +		} + +		case LLInventoryType::IT_GESTURE: +		{ +			cb = new LLBoostFuncInventoryCallback(create_gesture_cb); +			next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Gestures"); +			break; +		} + +		case LLInventoryType::IT_NOTECARD: +		{ +			cb = new LLBoostFuncInventoryCallback(create_notecard_cb); +			next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Notecards"); +			break; +		}  	} -	 + +	create_inventory_item(gAgent.getID(), +						  gAgent.getSessionID(), +						  parent_id, +						  LLTransactionID::tnull, +						  name, +						  desc, +						  asset_type, +						  inv_type, +						  NOT_WEARABLE, +						  next_owner_perm, +						  cb);  }	  const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not) @@ -1316,7 +1381,7 @@ void menu_create_inventory_item(LLInventoryPanel* panel, LLFolderBridge *bridge,  					  parent_id,  					  LLAssetType::AT_LSL_TEXT,  					  LLInventoryType::IT_LSL, -					  PERM_MOVE | PERM_TRANSFER); +					  PERM_MOVE | PERM_TRANSFER);	// overridden in create_new_item  	}  	else if ("notecard" == type_name)  	{ @@ -1325,7 +1390,7 @@ void menu_create_inventory_item(LLInventoryPanel* panel, LLFolderBridge *bridge,  					  parent_id,  					  LLAssetType::AT_NOTECARD,  					  LLInventoryType::IT_NOTECARD, -					  PERM_ALL); +					  PERM_ALL);	// overridden in create_new_item  	}  	else if ("gesture" == type_name)  	{ @@ -1334,7 +1399,7 @@ void menu_create_inventory_item(LLInventoryPanel* panel, LLFolderBridge *bridge,  					  parent_id,  					  LLAssetType::AT_GESTURE,  					  LLInventoryType::IT_GESTURE, -					  PERM_ALL); +					  PERM_ALL);	// overridden in create_new_item  	}  	else  	{ diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index ab19a12014..dc2fdb8c8d 100755 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -249,7 +249,9 @@ void rez_attachment_cb(const LLUUID& inv_item, LLViewerJointAttachment *attachme  void activate_gesture_cb(const LLUUID& inv_item); +void create_script_cb(const LLUUID& inv_item);  void create_gesture_cb(const LLUUID& inv_item); +void create_notecard_cb(const LLUUID& inv_item);  class AddFavoriteLandmarkCallback : public LLInventoryCallback  { diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index c6e67355c3..dd88c5b846 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1577,6 +1577,7 @@ void LLViewerRegion::unpackRegionHandshake()  	// Supplying false in this call means only send the default permissions to the simulator if   	// it has never been sent.  Once this data is sent the simulator will pass this data to new  	// simulators as the agent moves around. +	LLFloaterPermsDefault::updateCap(false);  }  void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)  | 
