From e302b6f1f451f8a2388698b3528fb71af9cf41b2 Mon Sep 17 00:00:00 2001
From: andreykproductengine <akleshchev@productengine.com>
Date: Fri, 22 Apr 2016 18:41:45 +0300
Subject: MAINT-2063 Fixed User had ability to delete Notecards and textures
 from library

---
 indra/newview/llpreviewnotecard.cpp |  6 ++++--
 indra/newview/llpreviewtexture.cpp  | 38 +++++++++++++++++++++++++------------
 2 files changed, 30 insertions(+), 14 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 20c43bc432..ba9845ef04 100755
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -94,7 +94,8 @@ BOOL LLPreviewNotecard::postBuild()
 	if (item)
 	{
 		getChild<LLUICtrl>("desc")->setValue(item->getDescription());
-		getChildView("Delete")->setEnabled(true);
+		BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(item->getUUID(), gInventory.getLibraryRootFolderID());
+		getChildView("Delete")->setEnabled(!source_library);
 	}
 	getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
 
@@ -219,6 +220,7 @@ void LLPreviewNotecard::loadAsset()
 		BOOL is_owner = gAgent.allowOperation(PERM_OWNER, perm, GP_OBJECT_MANIPULATE);
 		BOOL allow_copy = gAgent.allowOperation(PERM_COPY, perm, GP_OBJECT_MANIPULATE);
 		BOOL allow_modify = canModify(mObjectUUID, item);
+		BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(mItemUUID, gInventory.getLibraryRootFolderID());
 
 		if (allow_copy || gAgent.isGodlike())
 		{
@@ -288,7 +290,7 @@ void LLPreviewNotecard::loadAsset()
 			getChildView("lock")->setVisible( TRUE);
 		}
 
-		if(allow_modify || is_owner)
+		if((allow_modify || is_owner) && !source_library)
 		{
 			getChildView("Delete")->setEnabled(TRUE);
 		}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 2a2c51be40..645a77e42a 100755
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -38,6 +38,7 @@
 #include "llimagetga.h"
 #include "llimagepng.h"
 #include "llinventory.h"
+#include "llinventorymodel.h"
 #include "llnotificationsutil.h"
 #include "llresmgr.h"
 #include "lltrans.h"
@@ -120,18 +121,22 @@ BOOL LLPreviewTexture::postBuild()
 	childSetAction("save_tex_btn", LLPreviewTexture::onSaveAsBtn, this);
 	getChildView("save_tex_btn")->setVisible( true);
 	getChildView("save_tex_btn")->setEnabled(canSaveAs());
-	
-	if (!mCopyToInv) 
-	{
-		const LLInventoryItem* item = getItem();
-		
-		if (item)
-		{
-			childSetCommitCallback("desc", LLPreview::onText, this);
-			getChild<LLUICtrl>("desc")->setValue(item->getDescription());
-			getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
-		}
-	}
+
+    const LLInventoryItem* item = getItem();
+    if (item)
+    {
+        if (!mCopyToInv)
+        {
+            childSetCommitCallback("desc", LLPreview::onText, this);
+            getChild<LLUICtrl>("desc")->setValue(item->getDescription());
+            getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
+        }
+        BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(item->getUUID(), gInventory.getLibraryRootFolderID());
+        if (source_library)
+        {
+            getChildView("Discard")->setEnabled(false);
+        }
+    }
 
 	// Fill in ratios list with common aspect ratio values
 	mRatiosList.clear();
@@ -526,6 +531,15 @@ void LLPreviewTexture::loadAsset()
 		// check that we can copy inworld items into inventory
 		getChildView("Keep")->setEnabled(mIsCopyable);
 	}
+	else
+	{
+		// check that we can remove item
+		BOOL source_library = gInventory.isObjectDescendentOf(mItemUUID, gInventory.getLibraryRootFolderID());
+		if (source_library)
+		{
+			getChildView("Discard")->setEnabled(false);
+		}
+	}
 }
 
 LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()
-- 
cgit v1.2.3