* First draft implementation of copying prim inventory items back to agent inventory

* Now, if you own an item in a prim, you should be able to successfully drag it back into your inventory
* Temporarily, users which are not owners of the item cannot copy it, even if 'everyone can copy' is set
* This is pending fixes/implementation of upstream permission implementation
This commit is contained in:
Justin Clarke Casey
2008-04-26 20:31:01 +00:00
parent 323038ceb9
commit accd89b3f1
10 changed files with 140 additions and 14 deletions

View File

@@ -482,8 +482,9 @@ namespace OpenSim.Region.Environment.Scenes
public void RequestInventoryFile(IXfer xferManager)
{
byte[] fileData = new byte[0];
InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID);
//InventoryStringBuilder invString = new InventoryStringBuilder(UUID, LLUUID.Zero);
//InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID);
// InventoryStringBuilder invString = new InventoryStringBuilder(UUID, LLUUID.Zero);
InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, LLUUID.Zero);
lock (m_taskInventory)
{
@@ -492,20 +493,28 @@ namespace OpenSim.Region.Environment.Scenes
invString.AddItemStart();
invString.AddNameValueLine("item_id", item.ItemID.ToString());
invString.AddNameValueLine("parent_id", item.ParentID.ToString());
// invString.AddNameValueLine("parent_id", UUID.ToString());
//invString.AddNameValueLine("parent_id", item.ParentID.ToString());
invString.AddNameValueLine("parent_id", m_folderID.ToString());
invString.AddPermissionsStart();
// FIXME: Temporary until permissions are properly sorted.
invString.AddNameValueLine("base_mask", "7fffffff");
invString.AddNameValueLine("owner_mask", "7fffffff");
invString.AddNameValueLine("group_mask", "7fffffff");
invString.AddNameValueLine("everyone_mask", "7fffffff");
invString.AddNameValueLine("next_owner_mask", "7fffffff");
// invString.AddNameValueLine("group_mask", "00000000");
// invString.AddNameValueLine("everyone_mask", "00000000");
// invString.AddNameValueLine("next_owner_mask", "00086000");
// invString.AddNameValueLine("base_mask", Helpers.UIntToHexString(item.BaseMask));
// invString.AddNameValueLine("owner_mask", Helpers.UIntToHexString(item.OwnerMask));
// invString.AddNameValueLine("group_mask", Helpers.UIntToHexString(item.GroupMask));
// invString.AddNameValueLine("everyone_mask", Helpers.UIntToHexString(item.EveryoneMask));
// invString.AddNameValueLine("next_owner_mask", Helpers.UIntToHexString(item.NextOwnerMask));
invString.AddNameValueLine("creator_id", item.CreatorID.ToString());
invString.AddNameValueLine("owner_id", item.OwnerID.ToString());
@@ -537,8 +546,7 @@ namespace OpenSim.Region.Environment.Scenes
fileData = Helpers.StringToField(invString.BuildString);
// m_log.DebugFormat(
// "[PRIM INVENTORY]: RequestInventoryFile fileData: {0}", Helpers.FieldToUTF8String(fileData));
//m_log.Debug("[PRIM INVENTORY]: RequestInventoryFile fileData: " + Helpers.FieldToUTF8String(fileData));
if (fileData.Length > 2)
{