/// <summary> /// Shows the readonly details. /// </summary> /// <param name="mediaAccount">The media account.</param> private void ShowReadonlyDetails(MediaAccount mediaAccount) { SetEditMode(false); lActionTitle.Text = mediaAccount.Name.FormatAsHtmlTitle(); hlInactive.Visible = !mediaAccount.IsActive; hlLastRefresh.Visible = mediaAccount.LastRefreshDateTime.HasValue; if (mediaAccount.LastRefreshDateTime.HasValue) { var refreshTimeSpan = RockDateTime.Now - mediaAccount.LastRefreshDateTime.Value; hlLastRefresh.Text = "Last Refreshed: " + refreshTimeSpan.Humanize(); } var mediaAccountComponent = mediaAccount.GetMediaAccountComponent(); var descriptionList = new DescriptionList(); if (mediaAccountComponent != null) { descriptionList.Add("Type", mediaAccountComponent.EntityType.FriendlyName); } lDescription.Text = descriptionList.Html; lMetricData.Text = mediaAccountComponent?.GetAccountHtmlSummary(mediaAccount); }
/// <summary> /// Shows the edit details. /// </summary> /// <param name="mediaAccount">The media account.</param> private void ShowEditDetails(MediaAccount mediaAccount) { if (mediaAccount.Id == 0) { lActionTitle.Text = ActionTitle.Add(MediaAccount.FriendlyTypeName).FormatAsHtmlTitle(); } else { lActionTitle.Text = mediaAccount.Name.FormatAsHtmlTitle(); } hlInactive.Visible = !mediaAccount.IsActive; SetEditMode(true); tbName.Text = mediaAccount.Name; cbActive.Checked = mediaAccount.IsActive; if (mediaAccount.ComponentEntityType != null) { cpMediaAccountComponent.SetValue(mediaAccount.ComponentEntityType.Guid.ToString().ToUpper()); } else { cpMediaAccountComponent.SetValue(mediaAccount.ComponentEntityType != null ? mediaAccount.ComponentEntityType.Guid.ToString().ToUpper() : string.Empty); } RenderComponentAttributeControls(mediaAccount, true); }
/// <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 mediaAccount = GetMediaAccount(rockContext); var mediaAccountService = new MediaAccountService(rockContext); var isNew = mediaAccount == null; if (isNew) { mediaAccount = new MediaAccount(); mediaAccountService.Add(mediaAccount); } mediaAccount.Name = tbName.Text; mediaAccount.IsActive = cbActive.Checked; mediaAccount.ComponentEntityTypeId = cpMediaAccountComponent.SelectedEntityTypeId ?? 0; rockContext.SaveChanges(); mediaAccount.LoadAttributes(rockContext); avcComponentAttributes.GetEditValues(mediaAccount); mediaAccount.SaveAttributeValues(rockContext); rockContext.SaveChanges(); var pageReference = RockPage.PageReference; pageReference.Parameters.AddOrReplace(PageParameterKey.MediaAccountId, mediaAccount.Id.ToString()); Response.Redirect(pageReference.BuildUrl(), false); }
/// <summary> /// Gets the media account component. /// </summary> /// <param name="mediaAccount">The media account.</param> /// <returns></returns> private MediaAccountComponent GetMediaAccountComponent(MediaAccount mediaAccount) { var componentEntityTypeId = mediaAccount != null ? mediaAccount.ComponentEntityTypeId : ( int? )null; if (componentEntityTypeId.HasValue) { var componentEntityType = EntityTypeCache.Get(componentEntityTypeId.Value); return(componentEntityType == null ? null : MediaAccountContainer.GetComponent(componentEntityType.Name)); } return(null); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="mediaAccountId">The media account identifier.</param> public void ShowDetail(int mediaAccountId) { MediaAccount mediaAccount = null; if (!mediaAccountId.Equals(0)) { mediaAccount = GetMediaAccount(); } if (mediaAccount == null) { mediaAccount = new MediaAccount { Id = 0, IsActive = true }; } hfMediaAccountId.Value = mediaAccount.Id.ToString(); bool readOnly = false; nbEditModeMessage.Text = string.Empty; if (!IsUserAuthorized(Authorization.EDIT)) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(MediaAccount.FriendlyTypeName); } if (readOnly) { btnEdit.Visible = false; btnDelete.Visible = false; btnSyncWithProvider.Visible = false; ShowReadonlyDetails(mediaAccount); } else { btnEdit.Visible = true; btnDelete.Visible = true; if (mediaAccount.Id > 0) { btnSyncWithProvider.Visible = !(mediaAccount.GetMediaAccountComponent()?.AllowsManualEntry ?? true); ShowReadonlyDetails(mediaAccount); } else { btnSyncWithProvider.Visible = false; ShowEditDetails(mediaAccount); } } }
private void btnSignup_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtUsername.Text)) { MessageBox.Show("Username is empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (string.IsNullOrEmpty(txtPassword.Text)) { MessageBox.Show("Password is empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (string.IsNullOrEmpty(txtEmail.Text)) { MessageBox.Show("Email is empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string username = txtUsername.Text; string password = txtPassword.Text; string email = txtEmail.Text; MediaAccount account = new MediaAccount() { Username = username, Password = password, Email = email }; if (!DatabaseManager.InsertItem(account)) { MessageBox.Show("Could not create user. Please try again with a different username", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Account created!", "Succes", MessageBoxButtons.OK, MessageBoxIcon.Information); account = DatabaseManager.ContainsItem(new MediaAccount() { Username = username, Password = password, Email = email }, new [] {"Username", "Password"}); Globals.Account = account; DialogResult = DialogResult.OK; Close(); } }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnInit(EventArgs e) { base.OnInit(e); _mediaAccount = GetMediaAccount(); if (_mediaAccount != null) { var mediaAccountComponent = GetMediaAccountComponent(); // Block Security and special attributes (RockPage takes care of View) bool canAddEditDelete = IsUserAuthorized(Authorization.EDIT); gFolderList.DataKeyNames = new string[] { "Id" }; gFolderList.Actions.ShowAdd = canAddEditDelete && mediaAccountComponent != null && mediaAccountComponent.AllowsManualEntry; gFolderList.IsDeleteEnabled = canAddEditDelete; gFolderList.Actions.AddClick += gFolderList_AddClick; gFolderList.GridRebind += gFolderList_GridRebind; gFolderList.EntityTypeId = EntityTypeCache.Get <MediaFolder>().Id; gFolderList.ShowConfirmDeleteDialog = false; gfFilter.ApplyFilterClick += gfFilter_ApplyFilterClick; gfFilter.DisplayFilterValue += gfFilter_DisplayFilterValue; gfFilter.ClearFilterClick += gfFilter_ClearFilterClick; lTitle.Text = (_mediaAccount.Name + " Folders").FormatAsHtmlTitle(); } // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it this.BlockUpdated += Block_BlockUpdated; this.AddConfigurationUpdateTrigger(upnlContent); string deleteScript = @" $('table.js-grid-folders a.grid-delete-button').on('click', function( e ){ var $btn = $(this); var folderName = $btn.closest('tr').find('.js-name-folder').text(); e.preventDefault(); Rock.dialogs.confirm('Are you sure you wish to delete the '+ folderName +' folder. This will delete all related media files from Rock.', function (result) { if (result) { window.location = e.target.href ? e.target.href : e.target.parentElement.href; } }); }); "; ScriptManager.RegisterStartupScript(gFolderList, gFolderList.GetType(), "deleteRequestScript", deleteScript, true); }
/// <summary> /// Processes one account and return the result of the operation. /// </summary> /// <param name="mediaAccount">The media account.</param> /// <param name="limitFullSync"><c>true</c> if a full-sync should only be performed once per day.</param> /// <returns>The result of the operation.</returns> private async Task <OperationResult> ProcessOneAccount(MediaAccount mediaAccount, bool limitFullSync) { var sw = System.Diagnostics.Stopwatch.StartNew(); var errors = new List <string>(); if (mediaAccount.GetMediaAccountComponent() == null) { return(new OperationResult($"Skipped account {mediaAccount.Name}.", new[] { $"{mediaAccount.Name}: Media Account component was not found." })); } // Determine if this is a full sync or a partial refresh. var currentDateTime = RockDateTime.Now; var lastFullSync = mediaAccount.LastRefreshDateTime; var haveSyncedToday = lastFullSync.HasValue && lastFullSync.Value.Date == currentDateTime.Date; var refreshOnly = limitFullSync && haveSyncedToday; if (refreshOnly) { // Quick refresh media and folders only. var result = await MediaAccountService.RefreshMediaInAccountAsync(mediaAccount.Id); errors.AddRange(result.Errors); } else { // First sync all the media and folders. var result = await MediaAccountService.SyncMediaInAccountAsync(mediaAccount.Id); errors.AddRange(result.Errors); // Next sync all the analytics. result = await MediaAccountService.SyncAnalyticsInAccountAsync(mediaAccount.Id); errors.AddRange(result.Errors); } sw.Stop(); var seconds = ( int )sw.Elapsed.TotalSeconds; var message = $"{( refreshOnly ? "Refreshed" : "Synchronized" )} account {mediaAccount.Name} in {seconds}s."; // Since we will be aggregating errors include the // account name if there were any errors. return(new OperationResult(message, errors.Select(a => $"{mediaAccount.Name}: {a}"))); }
private void btnOK_Click(object sender, EventArgs e) { MediaAccount account = new MediaAccount() { ID = Globals.Account.ID, Username = txtUsername.Text, Password = txtPassword.Text, Email = txtEmail.Text, Picture = picProfile.ImageLocation }; if (!DatabaseManager.UpdateItem(account)) { MessageBox.Show("Something went wrong saving your information", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Globals.Account = account; Close(); }
public MessageControl(MessageInstance message) { InitializeComponent(); this.Message = message; user = new MediaAccount() {ID = message.MediaAccount}; category = new CategoryInstance() {ID = message.Category}; if (Message.Media != null) { Media media = new Media() {ID = Message.Media.Value}; media = DatabaseManager.ContainsItem(media, new [] {"ID"}); picMedia.ImageLocation = media.Url; hasMedia = true; } else { flowLayoutPanel1.Controls.Remove(panelMedia); Controls.Remove(flowLayoutPanel1); } user = DatabaseManager.ContainsItem(user, new[] {"ID"}); category = DatabaseManager.ContainsItem(category, new[] {"ID"}); Likes = int.Parse( DatabaseManager.QueryFirst("SELECT COUNT(*) FROM Likes WHERE message=" + message.ID)["Column1"] .ToString()); DidLike = DatabaseManager.ContainsItem(new Likes() {Message = message.ID, MediaAccount = Globals.Account.ID}, new[] {"Message", "MediaAccount"}) != null; picUser.ImageLocation = user.Picture; lblUsername.Text = user.Username; lblDate.Text = message.Datum.ToShortDateString(); lblMessage.Text = message.Report; lblTitle.Text = string.IsNullOrEmpty(message.Title) ? category.Name : $"{message.Title} - {category.Name}"; IsWriting = false; if (Globals.Account.ID != message.MediaAccount) Controls.Remove(lblRemove); }
/// <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); } } }
public void Reload() { user = new MediaAccount() {ID = Message.MediaAccount}; category = new CategoryInstance() {ID = Message.Category}; user = DatabaseManager.ContainsItem(user, new[] {"ID"}); category = DatabaseManager.ContainsItem(category, new[] {"ID"}); picUser.ImageLocation = user.Picture; lblUsername.Text = user.Username; lblDate.Text = Message.Datum.ToShortDateString(); lblMessage.Text = Message.Report; lblTitle.Text = string.IsNullOrEmpty(Message.Title) ? category.Name : $"{Message.Title} - {category.Name}"; IsWriting = false; if (Globals.Account.ID != Message.MediaAccount) Controls.Remove(lblRemove); }
/// <summary> /// Performs a full synchronization of folders and media content for the account. /// </summary> /// <param name="mediaAccount">The media account to be synchronized.</param> /// <param name="cancellationToken">Indicator that the operation should be stopped.</param> /// <returns> /// A <see cref="SyncOperationResult" /> object with the result of the operation. /// </returns> /// <remarks> /// The <see cref="MediaAccount.LastRefreshDateTime" /> is updated when /// <see cref="SyncOperationResult.IsSuccess" /> is <c>true</c>. /// </remarks> public override Task <SyncOperationResult> SyncMediaAsync(MediaAccount mediaAccount, CancellationToken cancellationToken) { return(Task.FromResult(new SyncOperationResult())); }
/// <summary> /// Gets the HTML to display on media account detail page. /// </summary> /// <param name="mediaAccount">The media account.</param> /// <returns> /// A string of HTML content. /// </returns> public override string GetAccountHtmlSummary(MediaAccount mediaAccount) { return(string.Empty); }
/// <summary> /// Renders the component attribute controls. /// </summary> private void RenderComponentAttributeControls(MediaAccount mediaAccount, bool setValues) { mediaAccount.LoadAttributes(); avcComponentAttributes.ExcludedAttributes = mediaAccount.Attributes.Values.Where(a => a.Key == "Order" || a.Key == "Active").ToArray(); avcComponentAttributes.AddEditControls(mediaAccount, setValues); }