From 349a17f664f661acf97896d4b778368edb822044 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 17 May 2008 00:16:16 +0000 Subject: * Tweaked patch mantis 1302 and committing it. --- .../Scenes/SceneObjectPart.Inventory.cs | 37 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs') diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs index a9dc9cf..8c5737c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs @@ -484,7 +484,7 @@ namespace OpenSim.Region.Environment.Scenes /// Serialize all the metadata for the items in this prim's inventory ready for sending to the client /// /// - public void RequestInventoryFile(IXfer xferManager) + public void RequestInventoryFile(IClientAPI client, IXfer xferManager) { byte[] fileData = new byte[0]; @@ -497,23 +497,45 @@ namespace OpenSim.Region.Environment.Scenes { foreach (TaskInventoryItem item in m_taskInventory.Values) { + LLUUID ownerID=item.OwnerID; + uint everyoneMask=0; + uint baseMask=item.BaseMask; + uint ownerMask=item.OwnerMask; + + if(item.InvType == 10) // Script + { + if((item.OwnerID != client.AgentId) && m_parentGroup.Scene.ExternalChecks.ExternalChecksCanViewScript(item.ItemID, UUID, client.AgentId)) + { + ownerID=client.AgentId; + baseMask=0x7fffffff; + ownerMask=0x7fffffff; + everyoneMask=(uint)(PermissionMask.Move | PermissionMask.Transfer); + } + if((item.OwnerID != client.AgentId) && m_parentGroup.Scene.ExternalChecks.ExternalChecksCanEditScript(item.ItemID, UUID, client.AgentId)) + { + ownerID=client.AgentId; + baseMask=0x7fffffff; + ownerMask=0x7fffffff; + everyoneMask=(uint)(PermissionMask.Move | PermissionMask.Transfer | PermissionMask.Modify); + } + } + invString.AddItemStart(); invString.AddNameValueLine("item_id", item.ItemID.ToString()); invString.AddNameValueLine("parent_id", UUID.ToString()); invString.AddPermissionsStart(); - invString.AddNameValueLine("base_mask", Helpers.UIntToHexString(item.BaseMask)); - invString.AddNameValueLine("owner_mask", Helpers.UIntToHexString(item.OwnerMask)); - invString.AddNameValueLine("group_mask", "00000000"); - invString.AddNameValueLine("everyone_mask", "00000000"); + invString.AddNameValueLine("base_mask", Helpers.UIntToHexString(baseMask)); + invString.AddNameValueLine("owner_mask", Helpers.UIntToHexString(ownerMask)); + invString.AddNameValueLine("group_mask", Helpers.UIntToHexString(0)); + invString.AddNameValueLine("everyone_mask", Helpers.UIntToHexString(everyoneMask)); invString.AddNameValueLine("next_owner_mask", Helpers.UIntToHexString(item.NextOwnerMask)); invString.AddNameValueLine("creator_id", item.CreatorID.ToString()); - invString.AddNameValueLine("owner_id", item.OwnerID.ToString()); + invString.AddNameValueLine("owner_id", ownerID.ToString()); invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString()); -// invString.AddNameValueLine("last_owner_id", item.OwnerID.ToString()); invString.AddNameValueLine("group_id", item.GroupID.ToString()); invString.AddSectionEnd(); @@ -538,6 +560,7 @@ namespace OpenSim.Region.Environment.Scenes fileData = Helpers.StringToField(invString.BuildString); + //Console.WriteLine(Helpers.FieldToUTF8String(fileData)); //m_log.Debug("[PRIM INVENTORY]: RequestInventoryFile fileData: " + Helpers.FieldToUTF8String(fileData)); if (fileData.Length > 2) -- cgit v1.1