summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/llinventoryfunctions.cpp28
-rwxr-xr-xindra/newview/skins/default/xui/en/strings.xml1
2 files changed, 26 insertions, 3 deletions
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 71a5ad412e..ddcaf9d2bd 100755
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -916,9 +916,12 @@ S32 compute_stock_count(LLUUID cat_uuid)
}
if (cat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)
{
- // Note: stock folders are *not* supposed to have nested subfolders so we stop recursion here
+ // Note: stock folders are *not* supposed to have nested subfolders so we stop recursion here but we count only items (subfolders will be ignored)
// Note: we *always* give a stock count for stock folders, it's useful even if the listing is unassociated
- return cat->getDescendentCount();
+ LLInventoryModel::cat_array_t* cat_array;
+ LLInventoryModel::item_array_t* item_array;
+ gInventory.getDirectDescendentsOf(cat_uuid,cat_array,item_array);
+ return item_array->size();
}
// Grab marketplace data for this folder
@@ -1593,7 +1596,7 @@ bool validate_marketplacelistings(LLInventoryCategory* cat, validation_callback_
}
}
// If we have a single type of items of the right type in the right place, we're done
- else if ((count == 1) && !has_bad_items && (((type == LLInventoryType::IT_COUNT) && (depth > 1)) || ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2))))
+ else if ((count == 1) && !has_bad_items && (((type == LLInventoryType::IT_COUNT) && (depth > 1)) || ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (depth > 2) && (cat_array->size() == 0))))
{
// Done with that folder : Print out the folder name unless we already found an error here
if (cb && result && (depth >= 1))
@@ -1646,6 +1649,18 @@ bool validate_marketplacelistings(LLInventoryCategory* cat, validation_callback_
gInventory.notifyObservers();
}
}
+ // Stock folder should have no sub folder so reparent those up
+ if (folder_type == LLFolderType::FT_MARKETPLACE_STOCK)
+ {
+ LLUUID parent_uuid = cat->getParentUUID();
+ LLInventoryModel::cat_array_t cat_array_copy = *cat_array;
+ for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++)
+ {
+ LLViewerInventoryCategory * viewer_cat = (LLViewerInventoryCategory *) (*iter);
+ gInventory.changeCategoryParent(viewer_cat, parent_uuid, false);
+ // Note : those reparented folders will be recursively visited and validated at the end of this function
+ }
+ }
}
else if (cb)
{
@@ -1660,6 +1675,13 @@ bool validate_marketplacelistings(LLInventoryCategory* cat, validation_callback_
std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Mixed Stock");
cb(message,LLError::LEVEL_ERROR);
}
+ else if ((folder_type == LLFolderType::FT_MARKETPLACE_STOCK) && (cat_array->size() != 0))
+ {
+ // Report if a stock folder contains subfolders
+ result = false;
+ std::string message = indent + cat->getName() + LLTrans::getString("Marketplace Validation Error Subfolder In Stock");
+ cb(message,LLError::LEVEL_ERROR);
+ }
else
{
// Simply print the folder name
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index fa9c1f5168..5db178a556 100755
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2298,6 +2298,7 @@ This feature is currently in Beta. Please add your name to this [http://goo.gl/f
<string name="Marketplace Validation Log"></string>
<string name="Marketplace Validation Warning Stock">stock folder must be contained by a version folder</string>
<string name="Marketplace Validation Error Mixed Stock">: Error: all items in a stock folder must be no-copy and of the same type</string>
+ <string name="Marketplace Validation Error Subfolder In Stock">: Error: stock folder cannot contain subfolders</string>
<string name="Marketplace Validation Warning Empty">: Warning: folder doesn't contain any items</string>
<string name="Marketplace Validation Warning Create Stock">: Warning: creating stock folder</string>
<string name="Marketplace Validation Warning Create Version">: Warning: creating version folder</string>