protected void lnkFileName_Click(object sender, EventArgs e) { string documentId = Request["id"]; //check for id in URL if (!string.IsNullOrEmpty(documentId)) { Article article = DocoManager.GetArticle(documentId); AuditManager.Audit(Page.User.Identity.Name, article.Id, AuditRecord.AuditAction.Viewed); article = DocoManager.GetArticle(documentId); SetTrafficLight(article); string navigateUrl = string.Format( CultureInfo.InvariantCulture, Resource.NewObjectPath, "Files", article.Category.Id); if (!string.IsNullOrEmpty(article.FileName)) { navigateUrl = string.Format( CultureInfo.InvariantCulture, Resource.DocoFilesLoc + Resource.FileOpen, UrlEncoding.Encode(Path.Combine(navigateUrl, article.FileName))); navigateUrl = navigateUrl.Insert(navigateUrl.IndexOf("&"), "&aid=" + article.Id); // go to that url Page.Response.Redirect(navigateUrl); } } }
protected void btnAcknowledge_Click(object sender, EventArgs e) { BusiBlocks.DocoBlock.Article latestArticle = BusiBlocks.DocoBlock.DocoManager.GetArticleByName(ArticleName, false); AuditManager.Audit(Page.User.Identity.Name, latestArticle.Id + latestArticle.Version.ToString(), AuditRecord.AuditAction.Acknowledged); Response.Redirect(hidReferrer.Value); }
protected void btnAcknowledge_Click(object sender, EventArgs e) { string documentId; documentId = Request["id"]; //check for id in URL if (!string.IsNullOrEmpty(documentId)) { Article article = DocoManager.GetArticle(documentId); AuditManager.Audit(Page.User.Identity.Name, article.Id, AuditRecord.AuditAction.Acknowledged); article = DocoManager.GetArticle(documentId); SetTrafficLight(article); } }
private void BindTrafficLight() { // The RadTabStrip1 is the edit/preview strip. This is visible when we are in edit mode. // Therefore don't show the acknowledge checkbox if we are in edit mode. if (this.RadTabStrip1.Visible) { ackText.Visible = false; } else { Article article = DocoManager.GetArticle(ArticleId); if (SecurityHelper.CanUserView(Page.User.Identity.Name, article.Category.Id)) { if (!string.IsNullOrEmpty(Request.QueryString["mode"]) && Request.QueryString["mode"].Equals("approve")) { divAckButton.Attributes["class"] = "divAckChecked"; btnAcknowledge.Enabled = false; } else if (article.RequiresAck) { if (article.Acknowledged) { divAckButton.Attributes["class"] = "divAckChecked"; btnAcknowledge.Enabled = false; } else { divAckButton.Attributes["class"] = "divAckButton"; } } else { //check the auti record for the article- audit if no records found. IList <AuditRecord> records = AuditManager.GetAuditItems(Page.User.Identity.Name, ArticleId, AuditRecord.AuditAction.Viewed); if (records.Count == 0) { AuditManager.Audit(Page.User.Identity.Name, ArticleId, AuditRecord.AuditAction.Viewed); } ackText.Visible = false; } } else { divAckButton.Visible = false; spanAcked.Visible = false; } } }
private void BindTrafficLight() { //check for reader access. If not in reader's access than do not apply traffic lights and no auditing required. if (SecurityHelper.CanUserView(Page.User.Identity.Name, Item.Category.Id)) { if (!string.IsNullOrEmpty(Request.QueryString["mode"]) && Request.QueryString["mode"].Equals("approve")) { lblAck.CssClass = "ack"; divAckButton.Attributes["class"] = "divAckChecked"; btnAcknowledge.Enabled = false; } else if (Item.RequiresAck) { if (Item.Acknowledged) { lblAck.CssClass = "ack"; divAckButton.Attributes["class"] = "divAckChecked"; btnAcknowledge.Enabled = false; } else { lblAck.CssClass = "notAck"; divAckButton.Attributes["class"] = "divAckButton"; } IList <AuditRecord> records = AuditManager.GetAuditItems(Page.User.Identity.Name, Item.Id, AuditRecord.AuditAction.Acknowledged); if (records.Count > 0) { lblAck.Text = records[0].TimeStamp.ToString(); } } else { IList <AuditRecord> records = AuditManager.GetAuditItems(Page.User.Identity.Name, Item.Id, AuditRecord.AuditAction.Viewed); if (records.Count == 0) { AuditManager.Audit(Page.User.Identity.Name, Item.Id, AuditRecord.AuditAction.Viewed); } ackText.Visible = false; lblAck.CssClass = "view"; } } else { HideTrafficLight(); } }
/// <summary> /// Retrieves a URL friendly string that points to an article. /// </summary> /// <param name="name">The name of the article</param> /// <returns>A user friendly Url for the article</returns> protected string GetViewArticleUrl(string name) { // If it is an uploaded document, then view the document and set the acknowledged flag // to true (via audit). Article article = DocoManager.GetArticleByName(name, false); if (article.IsUpload) { if (!article.Acknowledged) { // todo Popup to say that this will be acknowledged. AuditManager.Audit(Page.User.Identity.Name, article.Id + article.Version.ToString(CultureInfo.InvariantCulture), AuditRecord.AuditAction.Acknowledged); } string root = Server.MapPath(System.IO.Path.Combine("../Doco/", System.Web.Configuration.WebConfigurationManager.AppSettings.Get(Resource.Root))); string path = string.Format( CultureInfo.InvariantCulture, Resource.NewObjectPath, root, article.Category.Id); if (!string.IsNullOrEmpty(article.FileName)) { string url = string.Format( CultureInfo.InvariantCulture, Resource.DocoFilesLoc + Resource.FileOpen, UrlEncoding.Encode(System.IO.Path.Combine(path, article.FileName))); return(url); } else { return(string.Empty); } } else { return(Navigation.Doco_ViewArticle(name, 0).GetClientUrl(this, true) + "&cMode=pub&id=" + article.Category.Id); } }
/// <summary> /// Loads the meta information for the selected document. Called once on PageInit. /// </summary> protected void LoadArticle() { BusiBlocks.DocoBlock.ArticleBase article; BusiBlocks.DocoBlock.Article latestArticle = BusiBlocks.DocoBlock.DocoManager.GetArticleByName(ArticleName, false); //if (BusiBlocks.SecurityHelper.CanRead(Page.User, latestArticle.Category, latestArticle) == false) // throw new BusiBlocks.InvalidPermissionException("read article"); if (!BusiBlocks.SecurityHelper.CanUserView(Page.User.Identity.Name, latestArticle.Category.Id) && !BusiBlocks.SecurityHelper.CheckWriteAccess(Page.User.Identity.Name, latestArticle.Category.Id)) { throw new BusiBlocks.InvalidGroupMembershipException(); } EditMode(latestArticle.Category.Id); if (ArticleVersion == 0) { article = latestArticle; } else { article = BusiBlocks.DocoBlock.DocoManager.GetArticleByVersion(latestArticle, ArticleVersion); } LoadArticleMeta(article); IsNumbChaps = latestArticle.NumberedChaps; //if admin is adding or editing the document then don't audit it. if (Request.UrlReferrer != null) { if (Request.UrlReferrer.AbsoluteUri.Contains("NewArticle.aspx") == false && Request.UrlReferrer.AbsoluteUri.Contains("EditArticle.aspx") == false) { AuditManager.Audit(Page.User.Identity.Name, article.Id + article.Version.ToString(), AuditRecord.AuditAction.Viewed); } } }
/// <summary> /// Display the given file. /// </summary> void OpenFile() { // Someone clicked on a file or folder... // Doesn't matter what's in x: if it has anything then open the file. if (!string.IsNullOrEmpty(Request.QueryString[Resource.QSX])) { // Get the object. string file = Request.QueryString[Resource.QSO]; FileInfo fi = new FileInfo(Path.Combine(Server.MapPath("."), file)); if (!fi.Exists) { // The file does not exist. throw new FileNotFoundException("File not found: " + fi.DirectoryName + "\\" + fi.Name); } // Set it as viewed string articleId = Request.QueryString["aid"]; if (!string.IsNullOrEmpty(articleId)) { AuditManager.Audit(Page.User.Identity.Name, articleId, AuditRecord.AuditAction.Viewed); } // Display the file. // 'application/octet-stream' should be okay for most cases. string attachment = string.Format( CultureInfo.InvariantCulture, Resource.ContentDispositionAttachment, fi.Name); Response.ContentType = Resource.ContentType; Response.AppendHeader(Resource.ContentDisposition, attachment); Response.TransmitFile(fi.FullName); Response.End(); // Clear the querystring. Request.QueryString.Remove(Resource.QSX); } }
private void BindItem() { try { Item item = NewsManager.GetItem(Item.Id); lblPageHeading.Text = Item.Title; lblAuthor.Text = Item.Author; lblDate.Text = Utilities.GetDateTimeForDisplay(Item.NewsDate); txtDetails.Text = Item.Description; if (!Item.RequiresAck) { ackText.Visible = false; // If this page has the Approval menu, then don't set it as viewed. if (!approveFooter.Visible) { AuditManager.Audit(Page.User.Identity.Name, Item.Id, AuditRecord.AuditAction.Viewed); } } VersionItem versionItem = VersionManager.GetVersionById(VersionId); if (versionItem != null) { int index = versionItem.VersionNumber.IndexOf(".", versionItem.VersionNumber.IndexOf(".") + 1); string publishedVersion = versionItem.VersionNumber.Substring(0, index); lnkVersion.Text = "Version " + versionItem.VersionNumber; lblVersionNumber.Text = publishedVersion; lnkVersion.NavigateUrl = Navigation.Communication_NewsVersionHistory(versionItem.GroupId).GetServerUrl(true); } } catch (Exception exception) { throw exception; ((IFeedback)Master).SetException(GetType(), exception); } }
protected void btnAcknowledge_Click(object sender, EventArgs e) { AuditManager.Audit(Utilities.GetUserName(Page.User.Identity.Name), Item.Id, AuditRecord.AuditAction.Acknowledged); BindTrafficLight(); }
protected void onLoggedIn(object sender, EventArgs e) { var loginControl = sender as Login; AuditManager.Audit(loginControl.UserName, "Logged In", AuditRecord.AuditAction.LogOn); }
protected void onLoggedOut(object sender, EventArgs e) { AuditManager.Audit(Page.User.Identity.Name, "Logged Out", AuditRecord.AuditAction.LogOn); }
private void LoadArticle(BusiBlocks.DocoBlock.Article latestArticle) { try { BusiBlocks.DocoBlock.ArticleBase article; if (!BusiBlocks.SecurityHelper.CanUserView(Page.User.Identity.Name, latestArticle.Category.Id)) { throw new BusiBlocks.InvalidGroupMembershipException(); } if (ArticleVersion == 0) { article = latestArticle; } else { article = BusiBlocks.DocoBlock.DocoManager.GetArticleByVersion(latestArticle, ArticleVersion); } lblArticleTitle.InnerText = article.Title; lblAuthor.InnerText = Utilities.GetDisplayUser(article.Author); lblDate.InnerText = Utilities.GetDateTimeForDisplay(article.UpdateDate); lblVersion.InnerText = article.Version.ToString(); lblArticleDescription.InnerText = article.Description; string body = article.Body; if (ElaborateOutput) { body = ElaborateXHTML(latestArticle, article); } if (Printing) { sectionTOC.Visible = false; sectionBody.InnerHtml = body; } else { if (article.TOC == null) { sectionTOC.Visible = false; sectionBody.Attributes["class"] = "sectionNoTOC"; } else if (article.TOC.Length > 0) { Control TOC = ParseControl(article.TOC); SetControlVisibility(TOC); sectionTOC.Controls.Add(TOC); } else { sectionBody.Attributes["class"] = "sectionNoTOC"; sectionTOC.Visible = false; } AuditManager.Audit(Page.User.Identity.Name, article.Id + article.Version.ToString(), AuditRecord.AuditAction.Viewed); } sectionBody.InnerHtml = body; linkLatestVersion.HRef = Navigation.Doco_ViewArticle(latestArticle.Name, 0).GetServerUrl(true); linkBrowseVersions.HRef = Navigation.Doco_ViewArticleVersions(latestArticle.Name).GetServerUrl(true); //Show the edit only if EditLinkVisible and this is the latest article version bool enabledEdit = BusiBlocks.SecurityHelper.CanUserEdit(Page.User.Identity.Name, latestArticle.Category.Id); linkEdit.Visible = enabledEdit && latestArticle == article; linkEdit.HRef = Navigation.Doco_EditArticle(ArticleName).GetServerUrl(true); linkPrint.HRef = Navigation.Doco_PrintArticle(ArticleName, ArticleVersion).GetServerUrl(true); sectionActions.Visible = SectionActionsVisible; sectionProperties.Visible = SectionPropertiesVisible; btnAcknowledge.Visible = article.RequiresAck && !article.Acknowledged; } catch (Exception ex) { throw ex; ((IFeedback)Page.Master).SetException(GetType(), ex); } }
protected void RadGrid1ItemCommand(object sender, GridCommandEventArgs e) { ((IFeedback)Page.Master).HideFeedback(); if (e.CommandName == "view") { GridDataItem item = (GridDataItem)e.Item; var lnkbtnView = (LinkButton)e.Item.FindControl("imgBtnView"); AuditManager.Audit(Page.User.Identity.Name, item["Id"].Text, AuditRecord.AuditAction.Viewed); Navigation.Communication_NewsViewItem(lnkbtnView.CommandArgument.ToString(CultureInfo.InvariantCulture)).Redirect(this); } else if (e.CommandName == "editVersion") { //edit link to be be the VersionID VersionItem versionByItem = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); string groupId = string.Empty; if (versionByItem != null) { groupId = versionByItem.GroupId; string versionId = (VersionManager.GetVersionByGroupId(groupId)).Id; string checkedoutUser = VersionManager.GetCheckedOutUser(groupId); if ((!string.IsNullOrEmpty(checkedoutUser)) && (checkedoutUser != Page.User.Identity.Name)) { ((IFeedback)Page.Master).SetError(GetType(), "Unable to edit: News Item is checked out to " + checkedoutUser); } else { //perform checkout by the user here VersionManager.CheckOutVersion(versionId, Page.User.Identity.Name); Navigation.Communication_NewsEditItem(versionId).Redirect(this); } } else //for existing announcements which dont have a version { //create a version out of the existing announcement string itemId = e.CommandArgument.ToString(); string VersionNumber = VersionManager.GetVersionNumber(VersionType.New, string.Empty); VersionManager.CreateVersionItem(new VersionItem() { ItemId = itemId, GroupId = itemId, VersionNumber = VersionNumber, DateCreated = DateTime.Now, Comments = string.Empty, ModifiedBy = Utilities.GetUserName(Page.User.Identity.Name) }); //get the version by itemId and then check out. string versionId = VersionManager.GetVersionByItemId(itemId).Id; VersionManager.CheckOutVersion(versionId, Utilities.GetUserName(Page.User.Identity.Name)); Navigation.Communication_NewsEditItem(versionId).Redirect(this); } } else if (e.CommandName == "delete") { Item itemToDelete = NewsManager.GetItem(e.CommandArgument.ToString()); string itemNameBeforeDelete = itemToDelete.Title; string groupID = VersionManager.GetVersionByItemId(itemToDelete.Id).GroupId; string checkedoutUser = VersionManager.GetCheckedOutUser(groupID); if ((!string.IsNullOrEmpty(checkedoutUser)) && (checkedoutUser != Page.User.Identity.Name)) { ((IFeedback)Page.Master).SetError(GetType(), "Unable to delete: News Item is checked out to " + checkedoutUser); } else { string itemIdBeforeDelete = itemToDelete.Category.Id; NewsManager.DeleteItemByGroup(groupID); //Controls_TreeView tree = (Controls_TreeView)this.Parent.FindControl("tree1"); //tree.PopulateTreeView<Category>(NewsManager.GetViewableCategories(Page.User.Identity.Name), false, false, string.Empty); //tree.RebindNode(itemIdBeforeDelete, false); ((IFeedback)Page.Master).ShowFeedback(BusiBlocksConstants.Blocks.Administration.ShortName, itemToDelete.GetType().Name, Feedback.Actions.Deleted, itemNameBeforeDelete); } } else if (e.CommandName == RadGrid.FilterCommandName) { Pair filterPair = (Pair)e.CommandArgument; List <NewsGridItem> items = new List <NewsGridItem>(); switch (filterPair.Second.ToString()) { case "Category": TextBox tbPattern = (e.Item as GridFilteringItem)["Category"].Controls[0] as TextBox; FilterExpression = tbPattern.Text; BindWithFilter(items); RadGridManage.DataBind(); if (!string.IsNullOrEmpty(FilterExpression)) { var foundNews = NewsManager.GetCategoryByLikeName(FilterExpression.Split(',').First(), true); int foundCount = foundNews.Count; if (foundCount > 0) { //Controls_TreeView tree = (Controls_TreeView)this.Parent.FindControl("tree1"); //tree.PopulateTreeView<Category>(NewsManager.GetViewableCategories(Page.User.Identity.Name), false, false, string.Empty); //string selectedNode = (foundNews.FirstOrDefault()).Id; //tree.RebindNode(selectedNode, true); } } break; default: break; } } else if (e.CommandName == "approveItem") { VersionItem versionByItem = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); string groupId = string.Empty; if (versionByItem != null) { groupId = versionByItem.GroupId; string checkedoutUser = VersionManager.GetCheckedOutUser(groupId); if ((!string.IsNullOrEmpty(checkedoutUser)) && (checkedoutUser != Page.User.Identity.Name)) { ((IFeedback)Page.Master).SetError(GetType(), "Unable to approve: News Item is checked out to " + checkedoutUser); } else { string versionId = (VersionManager.GetVersionByGroupId(groupId)).Id; Navigation.Communication_NewsViewItemApproval(versionId).Redirect(this); } } else { Navigation.Communication_NewsViewItemApproval(e.CommandArgument.ToString()).Redirect(this); } } else if (e.CommandName == "checkinItem") { VersionManager.CheckInVersion(e.CommandArgument.ToString()); Navigation.Communication_News().Redirect(this); } else if (e.CommandName == "viewStatus") { // Navigate to the user view status page and pass the item id VersionItem versionByItem = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); if (versionByItem != null) { Navigation.Communication_UserViewStatus(versionByItem.ItemId, versionByItem.Id).Redirect(this); } } //else if (e.CommandName == "UsersViewed") //{ // Item item = NewsManager.GetItem(e.CommandArgument.ToString()); // VersionItem version = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); // IList<User> totalUsers = GetTotalUsers(item.Category.Id); // List<User> usersViewed = new List<BusiBlocks.Membership.User>(); // IList<string> personsViewed = new List<string>(); // //get the published id. // List<string> publishedIds = new List<string>(); // publishedIds = GetRespectivePublishedVersions(version.GroupId, version.VersionNumber); // usersViewed = GetViewUsers(AuditRecord.AuditAction.Viewed, totalUsers, publishedIds); // foreach (User user in usersViewed) // personsViewed.Add(user.Person.Id); // Session["personList"] = personsViewed; // Navigation.Directory_Search().Redirect(this); //} //else if (e.CommandName == "UsersNotViewed") //{ // Item item = NewsManager.GetItem(e.CommandArgument.ToString()); // VersionItem version = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); // IList<User> totalUsers = GetTotalUsers(item.Category.Id); // List<User> usersViewed = new List<BusiBlocks.Membership.User>(); // IList<string> personsNotViewed = new List<string>(); // //get the published id. // List<string> publishedIds = new List<string>(); // publishedIds = GetRespectivePublishedVersions(version.GroupId, version.VersionNumber); // usersViewed = GetViewUsers(AuditRecord.AuditAction.Viewed, totalUsers, publishedIds); // foreach (User user in totalUsers) // if (!usersViewed.Contains(user)) // personsNotViewed.Add(user.Person.Id); // Session["personList"] = personsNotViewed; // Navigation.Directory_Search().Redirect(this); //} //else if (e.CommandName == "UsersAcked") //{ // Item item = NewsManager.GetItem(e.CommandArgument.ToString()); // VersionItem version = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); // IList<User> totalUsers = GetTotalUsers(item.Category.Id); // List<User> usersViewed = new List<BusiBlocks.Membership.User>(); // IList<string> personsViewed = new List<string>(); // //get the published id. // List<string> publishedIds = new List<string>(); // publishedIds = GetRespectivePublishedVersions(version.GroupId, version.VersionNumber); // usersViewed = GetViewUsers(AuditRecord.AuditAction.Acknowledged, totalUsers, publishedIds); // foreach (User user in usersViewed) // personsViewed.Add(user.Person.Id); // Session["personList"] = personsViewed; // Navigation.Directory_Search().Redirect(this); //} //else if (e.CommandName == "UsersNotAcked") //{ // Item item = NewsManager.GetItem(e.CommandArgument.ToString()); // VersionItem version = VersionManager.GetVersionByItemId(e.CommandArgument.ToString()); // IList<User> totalUsers = GetTotalUsers(item.Category.Id); // List<User> usersViewed = new List<BusiBlocks.Membership.User>(); // IList<string> personsNotViewed = new List<string>(); // //get the published id. // List<string> publishedIds = new List<string>(); // publishedIds = GetRespectivePublishedVersions(version.GroupId, version.VersionNumber); // usersViewed = GetViewUsers(AuditRecord.AuditAction.Acknowledged, totalUsers, publishedIds); // foreach (User user in totalUsers) // if (!usersViewed.Contains(user)) // personsNotViewed.Add(user.Person.Id); // Session["personList"] = personsNotViewed; // Navigation.Directory_Search().Redirect(this); //} }