/// <summary> /// Shows the detail. /// </summary> /// <param name="pageId">The page identifier.</param> /// <param name="parentPageId">The parent page identifier.</param> public void ShowDetail(int pageId, int?parentPageId) { var rockContext = new RockContext(); LoadSites(rockContext); PageService pageService = new PageService(rockContext); Rock.Model.Page page = pageService.Queryable("Layout,PageRoutes") .Where(p => p.Id == pageId) .FirstOrDefault(); if (page == null) { page = new Rock.Model.Page { Id = 0, IsSystem = false, ParentPageId = parentPageId }; // fetch the ParentCategory (if there is one) so that security can check it page.ParentPage = pageService.Get(parentPageId ?? 0); } hfPageId.Value = page.Id.ToString(); // render UI based on Authorized and IsSystem bool readOnly = false; nbEditModeMessage.Text = string.Empty; // if the person is Authorized to EDIT the page, or has EDIT for the block var canEdit = page.IsAuthorized(Authorization.EDIT, CurrentPerson) || this.IsUserAuthorized(Authorization.EDIT); if (!canEdit) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(Rock.Model.Page.FriendlyTypeName); } btnSecurity.Visible = page.IsAuthorized(Authorization.ADMINISTRATE, CurrentPerson); btnSecurity.Title = page.InternalName; btnSecurity.EntityId = page.Id; aChildPages.HRef = string.Format("javascript: Rock.controls.modal.show($(this), '/pages/{0}?t=Child Pages&pb=&sb=Done')", page.Id); // this will be true when used in the Page Builder page, and false when used in the System Dialog var enableFullEditMode = this.GetAttributeValue("EnableFullEditMode").AsBooleanOrNull() ?? false; pnlEditModeActions.Visible = enableFullEditMode; pnlReadOnlyModeActions.Visible = enableFullEditMode; pnlHeading.Visible = enableFullEditMode; pnlDetails.CssClass = enableFullEditMode ? "panel panel-block" : string.Empty; pnlBody.CssClass = enableFullEditMode ? "panel-body" : string.Empty; if (readOnly) { btnEdit.Visible = false; btnDelete.Visible = false; ShowReadonlyDetails(page); } else { btnEdit.Visible = true; string errorMessage = string.Empty; btnDelete.Visible = true; btnDelete.Enabled = pageService.CanDelete(page, out errorMessage); btnDelete.ToolTip = btnDelete.Enabled ? string.Empty : errorMessage; if (page.Id > 0 && enableFullEditMode) { ShowReadonlyDetails(page); } else { ShowEditDetails(page); } } if (btnDelete.Visible && btnDelete.Enabled) { btnDelete.Attributes["onclick"] = string.Format("javascript: return Rock.dialogs.confirmDelete(event, '{0}');", Rock.Model.Page.FriendlyTypeName.ToLower()); } }
/// <summary> /// Handles the Click event of the lbSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void lbSave_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { Rock.Model.Page page; var rockContext = new RockContext(); var pageService = new PageService( rockContext ); int pageId = hfPageId.Value.AsInteger(); if ( pageId == 0 ) { page = new Rock.Model.Page(); if ( _page != null ) { page.ParentPageId = _page.Id; page.LayoutId = _page.LayoutId; } else { page.ParentPageId = null; page.LayoutId = PageCache.Read( RockPage.PageId ).LayoutId; } page.PageTitle = dtbPageName.Text; page.BrowserTitle = page.PageTitle; page.EnableViewState = true; page.IncludeAdminFooter = true; page.MenuDisplayChildPages = true; Rock.Model.Page lastPage = pageService.GetByParentPageId( _page.Id ).OrderByDescending( b => b.Order ).FirstOrDefault(); if ( lastPage != null ) { page.Order = lastPage.Order + 1; } else { page.Order = 0; } pageService.Add( page ); } else { page = pageService.Get( pageId ); } page.LayoutId = ddlLayout.SelectedValueAsInt().Value; page.InternalName = dtbPageName.Text; if ( page.IsValid ) { rockContext.SaveChanges(); PageCache.Flush( page.Id ); if ( _page != null ) { Rock.Security.Authorization.CopyAuthorization( _page, page ); _page.FlushChildPages(); } BindGrid(); } rGrid.Visible = true; pnlDetails.Visible = false; } }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click(object sender, EventArgs e) { CompetencyPersonProject competencyPersonProject; ResidencyService <CompetencyPersonProject> competencyPersonProjectService = new ResidencyService <CompetencyPersonProject>(); CompetencyPersonProjectAssessment competencyPersonProjectAssessment; ResidencyService <CompetencyPersonProjectAssessment> competencyPersonProjectAssessmentService = new ResidencyService <CompetencyPersonProjectAssessment>(); ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment> competencyPersonProjectAssessmentPointOfAssessmentService = new ResidencyService <CompetencyPersonProjectAssessmentPointOfAssessment>(); int competencyPersonProjectId = hfCompetencyPersonProjectId.ValueAsInt(); if (competencyPersonProjectId == 0) { competencyPersonProject = new CompetencyPersonProject(); competencyPersonProjectService.Add(competencyPersonProject, CurrentPersonId); } else { competencyPersonProject = competencyPersonProjectService.Get(competencyPersonProjectId); } int competencyPersonProjectAssessmentId = hfCompetencyPersonProjectAssessmentId.ValueAsInt(); if (competencyPersonProjectAssessmentId == 0) { competencyPersonProjectAssessment = new CompetencyPersonProjectAssessment(); competencyPersonProjectAssessmentService.Add(competencyPersonProjectAssessment, CurrentPersonId); } else { competencyPersonProjectAssessment = competencyPersonProjectAssessmentService.Get(competencyPersonProjectAssessmentId); competencyPersonProjectAssessment.CompetencyPersonProjectAssessmentPointOfAssessments = new List <CompetencyPersonProjectAssessmentPointOfAssessment>(); } // set competencyPersonProjectAssessment.CompetencyPersonProjectId after saving competencyPersonProject in case it is new competencyPersonProjectAssessment.AssessmentDateTime = DateTime.Now; competencyPersonProjectAssessment.RatingNotes = tbRatingNotesOverall.Text; competencyPersonProjectAssessment.AssessorPersonId = hfAssessorPersonId.ValueAsInt(); if (!competencyPersonProjectAssessment.IsValid) { // Controls will render the error messages return; } List <CompetencyPersonProjectAssessmentPointOfAssessment> competencyPersonProjectAssessmentPointOfAssessmentList = new List <CompetencyPersonProjectAssessmentPointOfAssessment>(); foreach (RepeaterItem item in rptPointOfAssessment.Items.OfType <RepeaterItem>()) { HiddenField hfProjectPointOfAssessmentId = item.FindControl("hfProjectPointOfAssessmentId") as HiddenField; int projectPointOfAssessmentId = hfProjectPointOfAssessmentId.ValueAsInt(); CompetencyPersonProjectAssessmentPointOfAssessment competencyPersonProjectAssessmentPointOfAssessment = competencyPersonProjectAssessmentPointOfAssessmentService.Queryable() .Where(a => a.ProjectPointOfAssessmentId == projectPointOfAssessmentId) .Where(a => a.CompetencyPersonProjectAssessmentId == competencyPersonProjectAssessmentId).FirstOrDefault(); if (competencyPersonProjectAssessmentPointOfAssessment == null) { competencyPersonProjectAssessmentPointOfAssessment = new CompetencyPersonProjectAssessmentPointOfAssessment(); //// set competencyPersonProjectAssessmentPointOfAssessment.CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessment.Id in save in case it's new competencyPersonProjectAssessmentPointOfAssessment.ProjectPointOfAssessmentId = projectPointOfAssessmentId; } LabeledDropDownList ddlPointOfAssessmentRating = item.FindControl("ddlPointOfAssessmentRating") as LabeledDropDownList; TextBox tbRatingNotesPOA = item.FindControl("tbRatingNotesPOA") as TextBox; competencyPersonProjectAssessmentPointOfAssessment.Rating = ddlPointOfAssessmentRating.SelectedValueAsInt(); competencyPersonProjectAssessmentPointOfAssessment.RatingNotes = tbRatingNotesPOA.Text; competencyPersonProjectAssessmentPointOfAssessmentList.Add(competencyPersonProjectAssessmentPointOfAssessment); } RockTransactionScope.WrapTransaction(() => { competencyPersonProjectService.Save(competencyPersonProject, CurrentPersonId); competencyPersonProjectAssessment.CompetencyPersonProjectId = competencyPersonProject.Id; // set Overall Rating based on average of POA ratings competencyPersonProjectAssessment.OverallRating = (decimal?)competencyPersonProjectAssessmentPointOfAssessmentList.Average(a => a.Rating); competencyPersonProjectAssessmentService.Save(competencyPersonProjectAssessment, CurrentPersonId); foreach (var competencyPersonProjectAssessmentPointOfAssessment in competencyPersonProjectAssessmentPointOfAssessmentList) { competencyPersonProjectAssessmentPointOfAssessment.CompetencyPersonProjectAssessmentId = competencyPersonProjectAssessment.Id; if (competencyPersonProjectAssessmentPointOfAssessment.Id == 0) { competencyPersonProjectAssessmentPointOfAssessmentService.Add(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); } competencyPersonProjectAssessmentPointOfAssessmentService.Save(competencyPersonProjectAssessmentPointOfAssessment, CurrentPersonId); } }); Rock.Model.Page page = null; string personProjectDetailPageGuid = this.GetAttributeValue("PersonProjectDetailPage"); if (!string.IsNullOrWhiteSpace(personProjectDetailPageGuid)) { page = new PageService().Get(new Guid(personProjectDetailPageGuid)); } if (page != null) { Dictionary <string, string> qryString = new Dictionary <string, string>(); qryString["competencyPersonProjectId"] = hfCompetencyPersonProjectId.Value; NavigateToPage(page.Guid, qryString); } else { throw new Exception("PersonProjectDetailPage not configured correctly"); } }
/// <summary> /// Handles the Click event of the lbSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void lbSave_Click(object sender, EventArgs e) { if (Page.IsValid) { Rock.Model.Page page; var rockContext = new RockContext(); var pageService = new PageService(rockContext); int pageId = hfPageId.Value.AsInteger(); if (pageId == 0) { page = new Rock.Model.Page(); if (_page != null) { page.ParentPageId = _page.Id; page.LayoutId = _page.LayoutId; page.AllowIndexing = _page.AllowIndexing; } else { page.ParentPageId = null; page.LayoutId = PageCache.Read(RockPage.PageId).LayoutId; } page.PageTitle = dtbPageName.Text; page.BrowserTitle = page.PageTitle; page.EnableViewState = true; page.IncludeAdminFooter = true; page.MenuDisplayChildPages = true; Rock.Model.Page lastPage = pageService.GetByParentPageId(_page.Id).OrderByDescending(b => b.Order).FirstOrDefault(); if (lastPage != null) { page.Order = lastPage.Order + 1; } else { page.Order = 0; } pageService.Add(page); } else { page = pageService.Get(pageId); } page.LayoutId = ddlLayout.SelectedValueAsInt().Value; page.InternalName = dtbPageName.Text; if (page.IsValid) { rockContext.SaveChanges(); PageCache.Flush(page.Id); if (_page != null) { Rock.Security.Authorization.CopyAuthorization(_page, page, rockContext); _page.FlushChildPages(); } BindGrid(); } rGrid.Visible = true; pnlDetails.Visible = false; } }
/// <summary> /// Sets the value. /// </summary> /// <param name="pageRoute">The page route.</param> public void SetValue(Rock.Model.PageRoute pageRoute) { if (pageRoute != null) { Rock.Model.Page page = pageRoute.Page; PageRouteId = pageRoute.Id; ItemId = page.Id.ToString(); var parentPageIds = new List <string>(); var parentPage = page.ParentPage; while (parentPage != null) { if (!parentPageIds.Contains(parentPage.Id.ToString())) { parentPageIds.Insert(0, parentPage.Id.ToString()); } else { // infinite recursion break; } parentPage = parentPage.ParentPage; } InitialItemParentIds = parentPageIds.AsDelimited(","); if (pageRoute.Id != 0) { // PageRoute is selected, so show the Page and its PageRoute and don't show the PageRoute picker ItemName = page.InternalName + " (" + pageRoute.Route + ")"; _rblSelectPageRoute.Visible = false; _btnShowPageRoutePicker.Style[HtmlTextWriterStyle.Display] = "none"; } else { // Only a Page is selected, so show PageRoutePicker button if it has page routes ItemName = page.InternalName; PageRouteId = null; // Update PageRoutePicker control values _rblSelectPageRoute.Items.Clear(); _rblSelectPageRoute.Visible = page.PageRoutes.Any(); if (page.PageRoutes.Count > 0) { foreach (var item in page.PageRoutes) { _rblSelectPageRoute.Items.Add(new ListItem(item.Route, item.Id.ToString())); } } if (_rblSelectPageRoute.Items.Count > 0) { _btnShowPageRoutePicker.Style[HtmlTextWriterStyle.Display] = ""; } else { _btnShowPageRoutePicker.Style[HtmlTextWriterStyle.Display] = "none"; } if (_rblSelectPageRoute.Items.Count == 1) { _btnShowPageRoutePicker.Text = "( 1 route exists )"; } else { _btnShowPageRoutePicker.Text = "(" + _rblSelectPageRoute.Items.Count + " routes exist )"; } } } else { ItemId = Rock.Constants.None.IdValue; ItemName = Rock.Constants.None.TextHtml; PageRouteId = null; _rblSelectPageRoute.Visible = false; _btnShowPageRoutePicker.Style[HtmlTextWriterStyle.Display] = "none"; } }
/// <summary> /// Handles the Click event of the lbSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void lbSave_Click(object sender, EventArgs e) { var rockContext = new RockContext(); var pageService = new PageService(rockContext); int parentPageId = SiteCache.Get(PageParameter("SiteId").AsInteger()).DefaultPageId.Value; var page = pageService.Get(PageParameter("Page").AsInteger()); if (page == null) { page = new Rock.Model.Page(); pageService.Add(page); var order = pageService.GetByParentPageId(parentPageId) .OrderByDescending(p => p.Order) .Select(p => p.Order) .FirstOrDefault(); page.Order = order + 1; page.ParentPageId = parentPageId; } var additionalSettings = page.AdditionalSettings.FromJsonOrNull <Rock.Mobile.AdditionalPageSettings>() ?? new Rock.Mobile.AdditionalPageSettings(); additionalSettings.LavaEventHandler = ceEventHandler.Text; page.InternalName = tbInternalName.Text; page.BrowserTitle = tbName.Text; page.PageTitle = tbName.Text; page.Description = tbDescription.Text; page.LayoutId = ddlLayout.SelectedValueAsId().Value; page.DisplayInNavWhen = cbDisplayInNavigation.Checked ? DisplayInNavWhen.WhenAllowed : DisplayInNavWhen.Never; page.AdditionalSettings = additionalSettings.ToJson(); int?oldIconId = null; if (page.IconBinaryFileId != imgPageIcon.BinaryFileId) { oldIconId = page.IconBinaryFileId; page.IconBinaryFileId = imgPageIcon.BinaryFileId; } rockContext.WrapTransaction(() => { rockContext.SaveChanges(); if (oldIconId.HasValue || page.IconBinaryFileId.HasValue) { BinaryFileService binaryFileService = new BinaryFileService(rockContext); if (oldIconId.HasValue) { var binaryFile = binaryFileService.Get(oldIconId.Value); if (binaryFile != null) { // marked the old images as IsTemporary so they will get cleaned up later binaryFile.IsTemporary = true; rockContext.SaveChanges(); } } if (page.IconBinaryFileId.HasValue) { var binaryFile = binaryFileService.Get(page.IconBinaryFileId.Value); if (binaryFile != null) { // marked the old images as IsTemporary so they will get cleaned up later binaryFile.IsTemporary = false; rockContext.SaveChanges(); } } } }); NavigateToCurrentPage(new Dictionary <string, string> { { "SiteId", PageParameter("SiteId") }, { "Page", page.Id.ToString() } }); }
/// <summary> /// Shows the page edit. /// </summary> /// <param name="pageId">The page identifier.</param> private void ShowPageEdit(int pageId) { var page = new PageService(new RockContext()).Get(pageId); // // Ensure the page is valid. // if (pageId != 0) { var pageCache = PageCache.Get(pageId); if (!CheckIsValidMobilePage(pageCache)) { return; } } if (page == null) { page = new Rock.Model.Page { DisplayInNavWhen = DisplayInNavWhen.WhenAllowed }; } // // Ensure user has access to edit this page. // if (!page.IsAuthorized(Authorization.EDIT, CurrentPerson)) { nbError.Text = Rock.Constants.EditModeMessage.NotAuthorizedToEdit(typeof(Rock.Model.Page).GetFriendlyTypeName()); pnlEditPage.Visible = false; return; } var additionalSettings = page.AdditionalSettings.FromJsonOrNull <Rock.Mobile.AdditionalPageSettings>() ?? new Rock.Mobile.AdditionalPageSettings(); // // Set the basic fields of the page. // tbName.Text = page.PageTitle; tbInternalName.Text = page.InternalName; tbDescription.Text = page.Description; cbDisplayInNavigation.Checked = page.DisplayInNavWhen == DisplayInNavWhen.WhenAllowed; ceEventHandler.Text = additionalSettings.LavaEventHandler; imgPageIcon.BinaryFileId = page.IconBinaryFileId; // // Configure the layout options. // var siteId = PageParameter("SiteId").AsInteger(); ddlLayout.Items.Add(new ListItem()); foreach (var layout in LayoutCache.All().Where(l => l.SiteId == siteId)) { ddlLayout.Items.Add(new ListItem(layout.Name, layout.Id.ToString())); } ddlLayout.SetValue(page.LayoutId); pnlEditPage.Visible = true; pnlDetails.Visible = false; pnlBlocks.Visible = false; }