diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs
index 879e8852de..b67f6f3f1b 100644
--- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs
+++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs
@@ -399,6 +399,7 @@ namespace OpenSim.Region.CoreModules.Hypergrid
}
}
+
public InventoryItemBase DeleteItem(InventoryItemBase item)
{
item = m_inventoryService.GetInventoryItem(item.ID);
@@ -411,6 +412,35 @@ namespace OpenSim.Region.CoreModules.Hypergrid
}
}
+ public InventoryItemBase CopyItem(InventoryItemBase olditem)
+ {
+ InventoryItemBase Item = m_inventoryService.GetInventoryItem(olditem.ID); // this is the old item id
+ // BIG HACK here
+ UUID newID = olditem.AssetID;
+ if (Item != null)
+ {
+ if (olditem.Name != String.Empty)
+ {
+ Item.Name = olditem.Name;
+ }
+ Item.ID = newID;
+ Item.Folder = olditem.Folder;
+ // There should be some tests here about the owner, etc but I'm going to ignore that
+ // because I'm not sure it makes any sense
+
+ // Also I should probably close the asset...
+ m_inventoryService.AddItem(Item);
+ return Item;
+ }
+ else
+ {
+ m_log.Debug("[HGStandaloneInvService]: Failed to find item " + olditem.ID);
+ olditem.ID = UUID.Zero;
+ return olditem;
+ }
+
+ }
+
///
/// Guid to UUID wrapper for same name IInventoryServices method
///
@@ -650,6 +680,8 @@ namespace OpenSim.Region.CoreModules.Hypergrid
"POST", AddAndGetCapUrl(authToken, "/MoveItem/", caps), MoveItem, CheckAuthSession));
httpServer.AddStreamHandler(new RestDeserialiseSecureHandler(
"POST", AddAndGetCapUrl(authToken, "/DeleteItem/", caps), DeleteItem, CheckAuthSession));
+ httpServer.AddStreamHandler(new RestDeserialiseSecureHandler(
+ "POST", AddAndGetCapUrl(authToken, "/CopyItem/", caps), CopyItem, CheckAuthSession));
httpServer.AddStreamHandler(new RestDeserialiseSecureHandler(
"POST", AddAndGetCapUrl(authToken, "/GetAsset/", caps), GetAsset, CheckAuthSession));