private List <string> GetRespectivePublishedVersions(string versionGroupId, string versionNumber) { IList <VersionItem> versions = VersionManager.GetAllVersions(versionGroupId); string versionMajorSuffix = versionNumber.Split('.').First(); List <string> publishedNewsItems = new List <string>(); foreach (VersionItem version in versions) { string tempVerMajorSuffix = version.VersionNumber.Split('.').First(); if (versionMajorSuffix.Equals(tempVerMajorSuffix)) { string pubId = ItemApprovalStatusManager.GetStatusByName("Published").Id; Item itemX = NewsManager.GetItem(version.ItemId); if (itemX != null) { if (itemX.ApprovalStatus != null && itemX.ApprovalStatus.Id.Equals(pubId)) { //add only published items publishedNewsItems.Add(itemX.Id); } } } } return(publishedNewsItems); }
protected void AddNewsToList(List <NewsGridItem> newsGridItems, string categoryName, IList <NewsGridItem> itemList) { if (!string.IsNullOrEmpty(categoryName)) { //get all grid items which match the filter. IList <NewsGridItem> gridItems = GetCategoryByLikeName(categoryName, itemList); foreach (NewsGridItem gItem in gridItems) { List <Item> newsItems = new List <Item>(); //get all versions by groupID IList <VersionItem> versionedItems = VersionManager.GetAllVersions(gItem.Draft.GroupId); //get the published news item for the version and add it to the list. foreach (VersionItem item in versionedItems) { //add all published ones to newsItems list string pubId = ItemApprovalStatusManager.GetStatusByName("Published").Id; Item itemX = NewsManager.GetItem(item.ItemId); if (itemX != null) { if (itemX.Category.Id.Equals(gItem.NewsItem.Category.Id)) { if (itemX.ApprovalStatus.Id.Equals(pubId)) { newsItems.Add(itemX); } } } } //sort the published versions by date inserted- DESC and get the first one. if (newsItems.Count > 0) { //if the grid item does not exist Item newsItem = newsItems.OrderByDescending(x => x.InsertDate).First <Item>(); if (newsItem.Category.Id.Equals(gItem.NewsItem.Category.Id)) { if (newsGridItems.Exists(x => x.Draft.GroupId.Equals(gItem.Draft.GroupId)) == false) { newsGridItems.Add(new NewsGridItem() { Draft = gItem.Draft, NewsItem = newsItem, TrafficLightUrl = GetUserStatus(newsItem, gItem.Draft.GroupId) }); } } } } } }
public void SetDataSource(IList <VersionItem> versions) { publishedVersions = new List <VersionItem>(); //add only published versions to the list so it can style the published rows foreach (VersionItem version in versions) { string pubId = ItemApprovalStatusManager.GetStatusByName("Published").Id; Item itemX = NewsManager.GetItem(version.ItemId); if (itemX != null && itemX.ApprovalStatus.Id.Equals(pubId)) { publishedVersions.Add(version); } } RadGrid1.DataSource = versions; RadGrid1.DataBind(); }
private VersionItem GetPublishedVersion(string VersionId) { string groupId = VersionManager.GetVersionById(VersionId).GroupId; string aprrovalPubId = ItemApprovalStatusManager.GetStatusByName("Published").Id; IList <VersionItem> versions = VersionManager.GetPublishedVersions(groupId); VersionItem publishedVersion = new VersionItem(); foreach (VersionItem version in versions) { Item newsItem = NewsManager.GetItem(version.ItemId); if (newsItem.ApprovalStatus.Id.Equals(aprrovalPubId)) { publishedVersion = version; break; } } return(publishedVersion); }
public static Item GetPublishedItem(string groupId) { IList <VersionItem> versions = VersionManager.GetAllVersions(groupId); List <Item> publishedItems = new List <Item>(); foreach (VersionItem version in versions) { Item newsItem = GetItem(version.ItemId); ItemApprovalStatus approvalStatus = ItemApprovalStatusManager.GetStatusByName("Published"); if (newsItem.ApprovalStatus.Id.Equals(approvalStatus.Id)) { publishedItems.Add(newsItem); } } if (publishedItems.Count > 0) { return(publishedItems.OrderByDescending(x => x.InsertDate).First <Item>()); } else { return(new Item()); } }
public void Bind(IList <Category> categories) { List <Item> items = new List <Item>(); List <NewsGridItem> gridItems = new List <NewsGridItem>(); string approvalPublishedId = ItemApprovalStatusManager.GetStatusByName("Published").Id; List <string> uniqueGroupIds = new List <string>(); foreach (Category category in categories) { IList <Item> itms = (IList <Item>)NewsManager.GetItems(category, false); foreach (Item item in itms) { if (item.ApprovalStatus.Id.Equals(approvalPublishedId)) { VersionItem version = VersionManager.GetVersionByItemId(item.Id); if (!uniqueGroupIds.Contains(version.GroupId)) { gridItems.Add(new NewsGridItem() { Draft = version, NewsItem = item, TrafficLightUrl = GetUserStatus(item, version.GroupId) }); uniqueGroupIds.Add(version.GroupId); } } } } //do a 1-1 news & draft comparison to check whether all news have corresponding draft or not if not then add it to the grid. Pressing edit will create its first version. foreach (Category category in categories) { IList <Item> childItems = NewsManager.GetItems(category, false); foreach (Item newsItem in childItems) { VersionItem versionItem = VersionManager.GetVersionByItemId(newsItem.Id); if (versionItem == null && newsItem.ApprovalStatus == null) { versionItem = new VersionItem(); versionItem.ItemId = newsItem.Id; versionItem.GroupId = newsItem.Id; gridItems.Add(new NewsGridItem() { Draft = versionItem, NewsItem = newsItem }); } } } List <NewsGridItem> gridItemsPermission = new List <NewsGridItem>(); foreach (var gi in gridItems) { if (gi.NewsItem != null) { if (SecurityHelper.CanUserView(Page.User.Identity.Name, gi.NewsItem.Category.Id)) { gridItemsPermission.Add(gi); } } } RadGridRead.DataSource = gridItemsPermission; }
protected void btnCreatePublish_Click(object sender, EventArgs e) { Category category = (currentSelectedNode == null ? null : NewsManager.GetCategory(currentSelectedNode)); string catId = (category == null) ? string.Empty : category.Id; if (category == null) { ((IFeedback)Master).SetError(GetType(), ErrorSelectCategory); } else if (!SecurityHelper.CheckWriteAccess(Page.User.Identity.Name, category.Id)) { ((IFeedback)Master).SetError(GetType(), ErrorCategoryPermission); } else { Item = CreateItem(category, ddlOwner.SelectedItem.Text, txtTitle.Text, txtDescription.Content, ItemApprovalStatusManager.GetStatusByName("Published")); Item.UpdateDate = DateTime.Now.AddSeconds(4.0); NewVersionId = SaveVersionItem(Item.Id, VersionManager.GetVersionNumber(VersionType.New, string.Empty), SaveType.CheckIn); VersionItem vi = VersionManager.GetVersionById(NewVersionId); vi.VersionNumber = VersionManager.GetVersionNumber(VersionType.Major, vi.ItemId); VersionManager.UpdateVersionItem(vi); NewsManager.UpdateItem(Item); CheckInVersion(); Navigation.Communication_News().Redirect(this); } }
private void SaveItem(Category category, SaveType saveType) { if (txtTitle.Text.Length >= 100) { ((IFeedback)Page.Master).SetError(GetType(), "The announcement title must be less than 100 characters long"); return; } Item.Category = category; Item.Description = txtDescription.Content; Item.Title = txtTitle.Text; Item.Tag = rblAcknowledge.Items.FindByValue("required").Selected.ToString() + ":" + rblApproval.Items.FindByValue("required").Selected.ToString(); //Item.Expiry = rdpExpiry.SelectedDate; string versionId = VersionId; if (string.IsNullOrEmpty(versionId)) { versionId = NewVersionId; } VersionItem versionItem = VersionManager.GetVersionById(versionId); VersionType versionType = VersionType.Draft; string GroupID = Item.Id; string VersionNumber = VersionManager.GetVersionNumber(VersionType.New, string.Empty); ItemApprovalStatus approvalStatus = new ItemApprovalStatus(); if (rblApproval.SelectedValue.Equals("required")) { if (saveType == SaveType.CheckIn) { approvalStatus = ItemApprovalStatusManager.GetDraftStatus(); } else if (saveType == SaveType.Publish) { approvalStatus = (Item.Author.Equals(Utilities.GetUserName(Page.User.Identity.Name)) == true) ? ItemApprovalStatusManager.GetForApprovalStatus() : Item.ApprovalStatus = ItemApprovalStatusManager.GetForEditApprovalStatus(); } else { approvalStatus = new ItemApprovalStatus() { Id = string.Empty, Name = string.Empty } }; } else { if (saveType == SaveType.CheckIn) { approvalStatus = ItemApprovalStatusManager.GetDraftStatus(); } else if (saveType == SaveType.Publish) { approvalStatus = ItemApprovalStatusManager.GetStatusByName("Published"); versionType = (rblEditDetails.SelectedIndex == 0) ? VersionType.Minor : VersionType.Major; } } if (versionItem != null) { //Create a new record only when saving after editing an existing version //if it's being put on hold then don't create a new record if (saveType == SaveType.Hold) { NewsManager.UpdateItem(Item); } else { Item = CreateItem(category, ddlOwner.SelectedItem.Text, txtTitle.Text, txtDescription.Content, approvalStatus); } GroupID = versionItem.GroupId; VersionNumber = VersionManager.GetVersionNumber(versionType, versionItem.ItemId); } //this applies to announcements when they don't have any versions previously. else { Item.ApprovalStatus = approvalStatus; NewsManager.UpdateItem(Item); } //save version item only when checkin or publish. if (saveType != SaveType.Hold) { NewVersionId = SaveVersionItem(GroupID, VersionNumber, saveType); } }
public void Bind(IList <Category> categories) { var items = new List <Item>(); List <NewsGridItem> gridItems = new List <NewsGridItem>(); //change this to include ItemTypeId(news,Doco,Forum) so it only search selected versions. List <VersionItem> latestDrafts = VersionManager.GetAllLatestDrafts(); //Binding all Published news with their corresponding latest version. foreach (VersionItem draft in latestDrafts) { List <Item> newsItems = new List <Item>(); //get all versions by groupID IList <VersionItem> versionedItems = VersionManager.GetAllVersions(draft.GroupId); foreach (VersionItem item in versionedItems) { //add all published ones to newsItems list string pubId = ItemApprovalStatusManager.GetStatusByName("Published").Id; Item itemX = NewsManager.GetItem(item.ItemId); if (itemX != null) { if (itemX.ApprovalStatus != null) { if (itemX.ApprovalStatus.Id.Equals(pubId) && item.Deleted == false) { newsItems.Add(itemX); } } } } //sort them by date inserted- DESC and get the first one. if (newsItems.Count > 0) { Item newsItem = newsItems.OrderByDescending(x => x.InsertDate).First <Item>(); gridItems.Add(new NewsGridItem() { Draft = draft, NewsItem = newsItem }); } else//no published item found - get the latest draft and its corresponding newsItem { VersionItem latestDraft = VersionManager.GetVersionByGroupId(draft.GroupId); Item newsItem = NewsManager.GetItem(latestDraft.ItemId); gridItems.Add(new NewsGridItem() { Draft = draft, NewsItem = newsItem }); } } //do a 1-1 news & draft comparison to check whether all news have corresponding draft or not if not then add it to the grid. Pressing edit will create its first version. foreach (Category category in categories) { IList <Item> childItems = NewsManager.GetItems(category, false); foreach (Item newsItem in childItems) { VersionItem versionItem = VersionManager.GetVersionByItemId(newsItem.Id); if (versionItem == null && newsItem.ApprovalStatus == null) { versionItem = new VersionItem(); versionItem.ItemId = newsItem.Id; versionItem.GroupId = newsItem.Id; gridItems.Add(new NewsGridItem() { Draft = versionItem, NewsItem = newsItem }); } } } List <NewsGridItem> gridItemsPermission = new List <NewsGridItem>(); foreach (var gi in gridItems) { if (gi.NewsItem != null) { if (SecurityHelper.CanUserEdit(Page.User.Identity.Name, gi.NewsItem.Category.Id) || SecurityHelper.CanUserContribute(Page.User.Identity.Name, gi.NewsItem.Category.Id)) { gridItemsPermission.Add(gi); } } } RadGridManage.DataSource = gridItemsPermission; }