/// <summary> /// This method returns the requested item status based on content location url parameters. /// </summary> /// <remarks>Copied from IContentLocatableView in Sitefinity. Should use it instead when it goes public.</remarks> /// <returns>Requested item status.</returns> private ContentLifecycleStatus ResolveRequestedItemStatus() { var itemStatusParam = SystemManager.CurrentHttpContext.Request.Params["sf-lc-status"] ?? SystemManager.CurrentHttpContext.Items["sf-lc-status"]; ContentLifecycleStatus status = ContentLifecycleStatus.Live; if (itemStatusParam != null) { if (!Enum.TryParse <ContentLifecycleStatus>(itemStatusParam as string, out status)) { status = ContentLifecycleStatus.Live; } } return(status); }
private IDictionary<Guid, List> GetRelevantItemsList(List<List> contentList, ListsManager manager, ContentLifecycleStatus status) { Dictionary<Guid, List> result = new Dictionary<Guid, List>(); ////get all master content items ids var contentItemsIds = contentList.Select(cl => cl.Id).ToArray<Guid>(); if (contentItemsIds.Length > 0) { ////get all items in the specified status related to the master items in the list var relatedContentItems = manager.GetItems<List>().Where(t => contentItemsIds.Contains(t.OriginalContentId) && t.Status == status); foreach (var item in relatedContentItems) result.Add(item.OriginalContentId, item); } return result.Count > 0 ? result : null; }
public IDataItem GetItemByUrl(string url, Type itemType, string provider, out string redirectUrl) { var manager = this.ResolveManager(itemType, provider); if (manager == null) { redirectUrl = null; return(null); } var itemIdFromQueryParam = (SystemManager.CurrentHttpContext.Request.ParamsGet("sf-itemId") ?? SystemManager.CurrentHttpContext.Items["sf-itemId"]) as string; if (!itemIdFromQueryParam.IsNullOrEmpty()) { Guid itemIdGuid; if (Guid.TryParse(itemIdFromQueryParam, out itemIdGuid)) { redirectUrl = null; return(manager.GetItem(itemType, itemIdGuid) as IDataItem); } } IDataItem item = null; if (manager is IContentManager || manager is DynamicModuleManager) { try { item = this.GetItemFromUrl(manager, itemType, url, out redirectUrl); } catch (System.UnauthorizedAccessException e) { redirectUrl = null; ItemAccessException access = new ItemAccessException(e.Message, e.InnerException); access.Data["ItemType"] = itemType.Name; throw access; } if (item != null) { var type = item.GetType(); if (!type.Equals(itemType) && !(type.Module != null && type.Module.ScopeName == "OpenAccessDynamic" && type.BaseType != null && type.BaseType.Equals(itemType))) { item = null; } } } else { item = ((IUrlProvider)manager.Provider).GetItemFromUrl(itemType, url, out redirectUrl); } var lifecycleItem = item as ILifecycleDataItem; var lifecycleManager = manager as ILifecycleManager; if (lifecycleItem != null && lifecycleManager != null) { ContentLifecycleStatus requestedStatus = ContentLocatableViewExtensions.GetRequestedItemStatus(); if (lifecycleItem.Status != requestedStatus) { item = lifecycleManager.Lifecycle.GetLive(lifecycleItem); } object requestedItem; if (ContentLocatableViewExtensions.TryGetItemWithRequestedStatus(lifecycleItem, lifecycleManager, out requestedItem)) { item = requestedItem as IDataItem; } } return(item); }
private IDictionary <Guid, List> GetRelevantItemsList(List <List> contentList, ListsManager manager, ContentLifecycleStatus status) { Dictionary <Guid, List> result = new Dictionary <Guid, List>(); ////get all master content items ids var contentItemsIds = contentList.Select(cl => cl.Id).ToArray <Guid>(); if (contentItemsIds.Length > 0) { ////get all items in the specified status related to the master items in the list var relatedContentItems = manager.GetItems <List>().Where(t => contentItemsIds.Contains(t.OriginalContentId) && t.Status == status); foreach (var item in relatedContentItems) { result.Add(item.OriginalContentId, item); } } return(result.Count > 0 ? result : null); }