Exemple #1
0
    private void BindButtons()
    {
        if (Request.QueryString.Get("mode") == "approve")
        {
            if (Item.ApprovalStatus.Id == ItemApprovalStatusManager.GetForEditApprovalStatus().Id)
            {
                //set approval for edit mode
                divApprovalBar.Visible  = true;
                divActionButton.Visible = false;
            }
            else
            {
                bool userCanApprove = ApproverManager.IsApprover(Page.User.Identity.Name, (VersionId ?? Item.Id));

                divApprovalBar.Visible  = userCanApprove;
                divActionButton.Visible = !userCanApprove;
            }
        }
        else
        {
            divApprovalBar.Visible = false;
            //hide edit buttons when viewing announcement
            if (!string.IsNullOrEmpty(Request.QueryString["mode"]) && Request.QueryString["mode"].Equals("view"))
            {
                h2LblAction.Visible   = false;
                approveFooter.Visible = false;
            }
            else
            {
                SetButtons();
            }
        }
    }
Exemple #2
0
    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 AddApproverButton(string versionId, string versionItemId, GridDataItem item)
    {
        //get news item for the latest version.
        //checked the status of the item and add approve button.
        Item newsLatestEditVersion = NewsManager.GetItem(versionItemId);

        //to be approved by owner when sent by editor
        if (newsLatestEditVersion.ApprovalStatus.Name == ItemApprovalStatusManager.GetForEditApprovalStatus().Name)
        {
            if (Page.User.Identity.Name.ToLower().Equals(item["Owner"].Text.ToLower()))
            {
                ((LinkButton)item["Actions"].FindControl("lnkApproveItem")).CommandArgument = versionItemId;
                item["Actions"].FindControl("lnkApproveItem").Visible = true;
            }
        }
        //to be approved by approver
        else if (newsLatestEditVersion.ApprovalStatus.Name == ItemApprovalStatusManager.GetForApprovalStatus().Name)
        {
            if (BusiBlocks.ApproverLayer.ApproverManager.IsApprover(Utilities.GetUserName(Page.User.Identity.Name), versionId))
            {
                ((LinkButton)item["Actions"].FindControl("lnkApproveItem")).CommandArgument = versionItemId;
                item["Actions"].FindControl("lnkApproveItem").Visible = true;
            }
        }
    }
Exemple #4
0
    protected void btnReject_Click(object sender, EventArgs e)
    {
        Item.ApprovalStatus     = ItemApprovalStatusManager.GetDraftStatus();
        Item.ActionedByPersonId = MembershipManager.GetUserByName(Page.User.Identity.Name).Id;
        Item.ActionedNotes      = popReject.Value;
        Item.ActionedOnDate     = DateTime.Now;

        NewsManager.UpdateItem(Item);
        Navigation.Communication_News().Redirect(this);
    }
Exemple #5
0
    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)
                            });
                        }
                    }
                }
            }
        }
    }
Exemple #6
0
 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);
    }
Exemple #8
0
    protected void btnApprove_Click(object sender, EventArgs e)
    {
        if (Item.ApprovalStatus.Id == ItemApprovalStatusManager.GetForEditApprovalStatus().Id)
        {
            Item.ApprovalStatus = ItemApprovalStatusManager.GetForApprovalStatus();
        }
        else if (Item.ApprovalStatus.Id == ItemApprovalStatusManager.GetForApprovalStatus().Id)
        {
            Item.ApprovalStatus = ItemApprovalStatusManager.GetApprovalStatus();
        }

        Item.ApprovalStatus = ItemApprovalStatusManager.GetApprovalStatus();
        Item.UpdateDate     = DateTime.Now;
        //Versioning
        //update the version item as well.
        //if person is approver only then change the major/minor version for publishing.
        if (Request.QueryString.Get("mode") == "approve")
        {
            VersionType versionType = VersionType.Draft;

            //if trEditDetails not visible then this is the first publish!
            if (trEditDetails.Visible == true)
            {
                if (!string.IsNullOrEmpty(rblEditDetails.SelectedValue))
                {
                    versionType = (rblEditDetails.SelectedValue == "major") ? VersionType.Major : VersionType.Minor;
                }
            }
            else
            {
                versionType = VersionType.Major;
            }

            VersionItem approveVersion = VersionManager.GetVersionById(VersionId);
            approveVersion.VersionNumber = VersionManager.GetVersionNumber(versionType, approveVersion.ItemId);

            VersionManager.UpdateVersionItem(approveVersion);
        }
        NewsManager.UpdateItem(Item);
        Navigation.Communication_News().Redirect(this);
    }
        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());
            }
        }
Exemple #10
0
    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;
    }
Exemple #11
0
    protected void btnCreate_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.GetDraftStatus());

            SaveVersionItem(Item.Id, VersionManager.GetVersionNumber(VersionType.New, string.Empty), SaveType.CheckIn);

            ((IFeedback)Page.Master).QueueFeedback(
                BusiBlocksConstants.Blocks.Communication.LongName,
                Item.GetType().Name,
                Feedback.Actions.Created,
                Item.Title
                );

            Navigation.Communication_News().Redirect(this);
        }
    }
Exemple #12
0
    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);
        }
    }
Exemple #13
0
    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;
    }