/// <summary> /// Gets the bread crumbs. /// </summary> /// <param name="pageReference">The page reference.</param> /// <returns></returns> public override List <BreadCrumb> GetBreadCrumbs(PageReference pageReference) { var breadCrumbs = new List <BreadCrumb>(); int?mediaFolderId = PageParameter(pageReference, PageParameterKey.MediaFolderId).AsIntegerOrNull(); if (mediaFolderId != null) { var rockContext = new RockContext(); var mediaFolder = new MediaFolderService(rockContext).Get(mediaFolderId.Value); if (mediaFolder != null) { breadCrumbs.Add(new BreadCrumb(mediaFolder.Name, pageReference)); } else { breadCrumbs.Add(new BreadCrumb("New Media Folder", pageReference)); } } else { // don't show a breadcrumb if we don't have a pageparam to work with } return(breadCrumbs); }
/// <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) { if (!Page.IsValid) { return; } var rockContext = new RockContext(); var mediaFolderService = new MediaFolderService(rockContext); var mediaFolderId = hfId.Value.AsIntegerOrNull(); MediaFolder mediaFolder = null; if (mediaFolderId.HasValue) { mediaFolder = mediaFolderService.Get(mediaFolderId.Value); } var isNew = mediaFolder == null; if (isNew) { mediaFolder = new MediaFolder() { Id = 0, MediaAccountId = hfMediaAccountId.ValueAsInt() }; mediaFolderService.Add(mediaFolder); } mediaFolder.Name = tbName.Text; mediaFolder.Description = tbDescription.Text; mediaFolder.IsContentChannelSyncEnabled = swEnableContentChannelSync.Checked; mediaFolder.WorkflowTypeId = wtpWorkflowType.SelectedValueAsId(); if (swEnableContentChannelSync.Checked) { var contentChannelId = ContentChannelCache.GetId(ddlContentChannel.SelectedValue.AsGuid()); if (contentChannelId.HasValue) { mediaFolder.ContentChannelId = contentChannelId.Value; } mediaFolder.ContentChannelAttributeId = ddlChannelAttribute.SelectedValueAsInt(); mediaFolder.ContentChannelItemStatus = rrbContentChannelItemStatus.SelectedValueAsEnum <ContentChannelItemStatus>(); } else { mediaFolder.ContentChannelId = null; mediaFolder.ContentChannelAttributeId = null; mediaFolder.ContentChannelItemStatus = null; } rockContext.SaveChanges(); var pageReference = RockPage.PageReference; pageReference.Parameters.AddOrReplace(PageParameterKey.MediaFolderId, mediaFolder.Id.ToString()); Response.Redirect(pageReference.BuildUrl(), false); }
/// <summary> /// Get the actual media folder model for deleting or editing /// </summary> /// <returns></returns> private MediaFolder GetMediaFolder(RockContext rockContext = null) { rockContext = rockContext ?? new RockContext(); var mediaFolderService = new MediaFolderService(rockContext); var mediaFolderId = PageParameter(PageParameterKey.MediaFolderId).AsIntegerOrNull(); if (!mediaFolderId.HasValue) { return(null); } return(mediaFolderService.Queryable("MediaAccount").FirstOrDefault(a => a.Id == mediaFolderId.Value)); }
/// <summary> /// Handles the Click event of the btnCancel 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 btnCancel_Click(object sender, EventArgs e) { if (hfId.Value.Equals("0")) { // Canceling on Add Dictionary <string, string> qryString = new Dictionary <string, string>(); qryString[PageParameterKey.MediaAccountId] = hfMediaAccountId.Value; NavigateToParentPage(qryString); } else { // Canceling on Edit var mediaFolder = new MediaFolderService(new RockContext()).Get(int.Parse(hfId.Value)); ShowReadonlyDetails(mediaFolder); } }
/// <summary> /// Handles the DeleteClick event of the gFolderList control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Rock.Web.UI.Controls.RowEventArgs"/> instance containing the event data.</param> protected void gFolderList_DeleteClick(object sender, Rock.Web.UI.Controls.RowEventArgs e) { var rockContext = new RockContext(); var mediaFolderService = new MediaFolderService(rockContext); var mediaFolder = mediaFolderService.Get(e.RowKeyId); if (mediaFolder != null) { string errorMessage; if (!mediaFolderService.CanDelete(mediaFolder, out errorMessage)) { mdGridWarning.Show(errorMessage, ModalAlertType.Information); return; } mediaFolderService.Delete(mediaFolder); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var rockContext = new RockContext(); var mediaFolderService = new MediaFolderService(rockContext); // Use AsNoTracking() since these records won't be modified, and therefore don't need to be tracked by the EF change tracker var qry = mediaFolderService.Queryable().AsNoTracking().Where(a => a.MediaAccountId == _mediaAccount.Id); // name filter string nameFilter = gfFilter.GetUserPreference(UserPreferenceKey.Name); if (!string.IsNullOrEmpty(nameFilter)) { qry = qry.Where(a => a.Name.Contains(nameFilter)); } var selectQry = qry .Select(a => new { a.Id, a.Name, ContentChannel = a.ContentChannel, Videos = a.MediaElements.Count }); var sortProperty = gFolderList.SortProperty; if (gFolderList.AllowSorting && sortProperty != null) { selectQry = selectQry.Sort(sortProperty); } else { selectQry = selectQry.OrderBy(a => a.Name); } gFolderList.EntityTypeId = EntityTypeCache.GetId <MediaFolder>(); gFolderList.DataSource = selectQry.ToList(); gFolderList.DataBind(); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="mediaFolderId">The media folder identifier.</param> /// <param name="mediaAccountId">The media account identifier.</param> private void ShowDetail(int mediaFolderId, int?mediaAccountId) { var rockContext = new RockContext(); var mediaFolderService = new MediaFolderService(rockContext); MediaFolder mediaFolder = null; if (!mediaAccountId.Equals(0)) { mediaFolder = mediaFolderService.Get(mediaFolderId); } if (mediaFolder == null) { MediaAccount mediaAccount = null; if (mediaAccountId.HasValue) { mediaAccount = new MediaAccountService(rockContext).Get(mediaAccountId.Value); } if (mediaAccount != null) { mediaFolder = new MediaFolder { Id = 0, MediaAccountId = mediaAccount.Id }; } else { pnlView.Visible = false; return; } } hfId.SetValue(mediaFolder.Id); hfMediaAccountId.SetValue(mediaFolder.MediaAccountId); pnlView.Visible = true; bool readOnly = false; nbEditModeMessage.Text = string.Empty; if (!IsUserAuthorized(Authorization.EDIT)) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(MediaFolder.FriendlyTypeName); } if (readOnly) { btnEdit.Visible = false; btnSyncContentChannelItems.Visible = false; ShowReadonlyDetails(mediaFolder); } else { btnEdit.Visible = true; if (mediaFolder.Id > 0) { btnSyncContentChannelItems.Visible = !(mediaFolder.MediaAccount.GetMediaAccountComponent()?.AllowsManualEntry ?? true); ShowReadonlyDetails(mediaFolder); } else { btnSyncContentChannelItems.Visible = false; ShowEditDetails(mediaFolder); } } }
/// <summary> /// Handles the Click event of the btnSyncContentChannelItems 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 btnSyncContentChannelItems_Click(object sender, EventArgs e) { Task.Run(() => MediaFolderService.AddMissingSyncedContentChannelItems(hfId.ValueAsInt())); mdSyncMessage.Show("Content channel item creation has started and will continue in the background.", ModalAlertType.Information); }
/// <summary> /// Handles the Click event of the btnEdit 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 btnEdit_Click(object sender, EventArgs e) { var mediaFolder = new MediaFolderService(new RockContext()).Get(hfId.Value.AsInteger()); ShowEditDetails(mediaFolder); }