diff options
author | Melanie Thielker | 2008-11-14 17:24:56 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-11-14 17:24:56 +0000 |
commit | edee11ff8750d452f012690c556384984795f4be (patch) | |
tree | 21738d6ee71f00dea792585ab25557c64e571dca /OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs | |
parent | * Switch default permissions back to false (so they are not on) as they were ... (diff) | |
download | opensim-SC_OLD-edee11ff8750d452f012690c556384984795f4be.zip opensim-SC_OLD-edee11ff8750d452f012690c556384984795f4be.tar.gz opensim-SC_OLD-edee11ff8750d452f012690c556384984795f4be.tar.bz2 opensim-SC_OLD-edee11ff8750d452f012690c556384984795f4be.tar.xz |
Reapplying a revised version of Christopher Yeoh's (IBM) patch for allow
inventory drop. Also adds a new flags, "propagate_permissions" to
OpenSim.ini to control that feature.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs index bfa9763..2b560f4 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -151,23 +151,44 @@ namespace OpenSim.Region.Environment.Scenes | |||
151 | taskItem.AssetID = item.AssetID; | 151 | taskItem.AssetID = item.AssetID; |
152 | taskItem.Name = item.Name; | 152 | taskItem.Name = item.Name; |
153 | taskItem.Description = item.Description; | 153 | taskItem.Description = item.Description; |
154 | taskItem.OwnerID = item.Owner; | 154 | taskItem.OwnerID = part.OwnerID; // Transfer ownership |
155 | taskItem.CreatorID = item.Creator; | 155 | taskItem.CreatorID = item.Creator; |
156 | taskItem.Type = item.AssetType; | 156 | taskItem.Type = item.AssetType; |
157 | taskItem.InvType = item.InvType; | 157 | taskItem.InvType = item.InvType; |
158 | 158 | ||
159 | taskItem.BasePermissions = item.BasePermissions; | 159 | if (remoteClient != null && |
160 | taskItem.CurrentPermissions = item.CurrentPermissions; | 160 | remoteClient.AgentId != part.OwnerID && |
161 | // FIXME: ignoring group permissions for now as they aren't stored in item | 161 | m_scene.ExternalChecks.ExternalChecksPropagatePermissions()) |
162 | taskItem.EveryonePermissions = item.EveryOnePermissions; | 162 | { |
163 | taskItem.NextPermissions = item.NextPermissions; | 163 | taskItem.BasePermissions = item.BasePermissions & |
164 | item.NextPermissions; | ||
165 | taskItem.CurrentPermissions = item.CurrentPermissions & | ||
166 | item.NextPermissions; | ||
167 | taskItem.EveryonePermissions = item.EveryOnePermissions & | ||
168 | item.NextPermissions; | ||
169 | taskItem.NextPermissions = item.NextPermissions; | ||
170 | taskItem.CurrentPermissions |= 8; | ||
171 | } else { | ||
172 | taskItem.BasePermissions = item.BasePermissions; | ||
173 | taskItem.CurrentPermissions = item.CurrentPermissions; | ||
174 | taskItem.CurrentPermissions |= 8; | ||
175 | taskItem.EveryonePermissions = item.EveryOnePermissions; | ||
176 | taskItem.NextPermissions = item.NextPermissions; | ||
177 | } | ||
178 | |||
164 | taskItem.Flags = item.Flags; | 179 | taskItem.Flags = item.Flags; |
165 | // TODO: These are pending addition of those fields to TaskInventoryItem | 180 | // TODO: These are pending addition of those fields to TaskInventoryItem |
166 | // taskItem.SalePrice = item.SalePrice; | 181 | // taskItem.SalePrice = item.SalePrice; |
167 | // taskItem.SaleType = item.SaleType; | 182 | // taskItem.SaleType = item.SaleType; |
168 | taskItem.CreationDate = (uint)item.CreationDate; | 183 | taskItem.CreationDate = (uint)item.CreationDate; |
184 | |||
185 | bool addFromAllowedDrop = false; | ||
186 | if (remoteClient!=null) | ||
187 | { | ||
188 | addFromAllowedDrop = remoteClient.AgentId!=part.OwnerID; | ||
189 | } | ||
169 | 190 | ||
170 | part.AddInventoryItem(taskItem); | 191 | part.AddInventoryItem(taskItem, addFromAllowedDrop); |
171 | 192 | ||
172 | return true; | 193 | return true; |
173 | } | 194 | } |