...
When we display this to the editors in edit-mode, this is what they'll see:
...
The folder selection can actually be dragged directly over from the Digizuite folder structure.We also have to have a standard controller that will popular a View Model with the assets to show. We do that here:
Code Block | ||
---|---|---|
| ||
protected override IViewComponentResult InvokeComponent(GalleryBlock currentContent) { GalleryBlockViewModel protectedgvm override= IViewComponentResultnew InvokeComponent(GalleryBlock currentContent)GalleryBlockViewModel(); gvm.CurrentBlock = currentContent; AssetQueryParameters aqm = new AssetQueryParameters(); aqm.Limit = currentContent.MaxNumberOfAssets; var facets = new List<FacetRequest>() { GalleryBlockViewModel gvm = new GalleryBlockViewModelFacetRequest(); { FacetMode = gvm.CurrentBlockFacetMode.QueryOnly, Recursive = currentContent;false, SearchKey = "assetType", AssetQueryParameters aqmValues = new AssetQueryParametersEnums.AssetType.Image.ToString().MakeIntList(); } }; if aqm.FoldersToSearch = (!string.IsNullOrEmpty(currentContent.Folders ?? new List<ContentReference>();)) { facets.Add(new FacetRequest() { FacetMode aqm.Limit = currentContent.MaxNumberOfAssets;= FacetMode.QueryOnly, Recursive = false, aqm.Page = 1; SearchKey aqm.AssetTypes= _client.Configuration.FolderMetafieldGuid.ToString(), Values = GlobalConstantscurrentContent.AssetTypes.Image.MakeIntList();Folders.Split(",").ToList() aqm.CropName = currentContent.CropName}); aqm.OptionalFilters = new Dictionary<string, string>(); } aqm.Facets = facets; if (!string.IsNullOrEmpty(currentContent.FreeText)) aqm.FreeText = currentContent.FreeText; gvm.Images = _client.Search(aqm.CacheFor(TimeSpan.FromMinutes(1)))?.Cast<IDigizuiteImage>()?.ToList(); return View(gvm); } |
Notice how we also make sure to set a cache timeout of 1 minute when doing the searching? That ensures a pretty updated image list, while not cause load to the DAM server for every page view. We could probably safely increase this number a lot.
...