/// <summary> /// Form OnAfterSave event. /// </summary> private void Form_OnAfterSave(object sender, EventArgs e) { if ((PostInfo == null) || !HasUserModifyPermission) { return; } if (Document != null) { if (!PostInfo.LinkedInPostDocumentGUID.HasValue) { PostInfo.LinkedInPostDocumentGUID = Document.DocumentGUID; } if (PostInfo.LinkedInPostPostAfterDocumentPublish && !IsUnderWorkflow && !PostInfo.IsPublished) { // Post will be scheduled on time when document gets published PostInfo.LinkedInPostScheduledPublishDateTime = Document.DocumentPublishFrom; } if (PostInfo.HasChanged) { LinkedInPostInfoProvider.SetLinkedInPostInfo(PostInfo); } } // Check whether the post should be published or scheduled now (post WON'T be published/scheduled if it should be published with the document which is under workflow) if (!PostInfo.IsPublished && !(PostInfo.LinkedInPostPostAfterDocumentPublish && IsUnderWorkflow)) { PublishPost(PostInfo.LinkedInPostID); } LoadPostDataIntoControl(PostInfo); }
/// <summary> /// OnAction for LinkedIn post object type. /// </summary> private void OnAction_LinkedIn(string actionName, object actionArgument) { switch (actionName) { case "delete": try { int postId = ValidationHelper.GetInteger(actionArgument, 0); var postInfo = LinkedInPostInfoProvider.GetLinkedInPostInfo(postId); if (VerifyPermissionsAndObjectAvailability(postInfo)) { LinkedInPostInfoProvider.DeleteLinkedInPostInfo(postInfo); } Control.ShowConfirmation(Control.GetString("sm.linkedin.posts.msg.completedelete")); } catch (LinkedInPartialDeleteException) { Control.ShowWarning(Control.GetString("sm.linkedin.posts.msg.partialdelete")); } catch (Exception ex) { EventLogProvider.LogWarning("Social marketing - LinkedIn post", "DELETEPOST", ex, SiteContext.CurrentSiteID, "LinkedIn post could not be deleted."); Control.ShowError(Control.GetString("sm.linkedin.posts.msg.deleteerror")); } break; } }
/// <summary> /// OnAfterSave event. /// </summary> private void ControlOnAfterSave(object sender, EventArgs eventArgs) { LinkedInPostInfo post = Control.EditedObject as LinkedInPostInfo; if (post == null) { return; } if (!post.LinkedInPostPostAfterDocumentPublish) { try { LinkedInPostInfoProvider.PublishLinkedInPost(post.LinkedInPostID); } catch (Exception ex) { EventLogProvider.LogWarning("Social marketing - LinkedIn post", "PUBLISHPOST", ex, SiteContext.CurrentSiteID, String.Format("An error occurred while publishing the LinkedIn post with ID {0}.", post.LinkedInPostID)); Control.ShowError(Control.GetString("sm.linkedin.posts.msg.unknownerror")); } } // Invoke event to set the form's state properly ControlOnAfterDataLoad(sender, eventArgs); }
/// <summary> /// Publishes LinkedIn post with given identifier. /// </summary> /// <param name="postId">LinkedIn post identifier.</param> private void PublishPost(int postId) { try { LinkedInPostInfoProvider.TryCancelScheduledPublishLinkedInPost(postId); LinkedInPostInfoProvider.PublishLinkedInPost(postId); } catch (Exception ex) { EventLogProvider.LogWarning("Social marketing - LinkedIn post", "PUBLISHPOST", ex, SiteContext.CurrentSiteID, String.Format("An error occurred while publishing the LinkedIn post with ID {0}.", postId)); } }
/// <summary> /// OnAfterDataLoad event /// </summary> private void ControlOnAfterDataLoad(object sender, EventArgs eventArgs) { LinkedInPostInfo post = Control.EditedObject as LinkedInPostInfo; if ((post != null) && (post.LinkedInPostID > 0)) { string message = LinkedInPostInfoProvider.GetPostPublishStateMessage(post, MembershipContext.AuthenticatedUser, SiteContext.CurrentSite); if (post.IsFaulty) { Control.ShowError(message); } else { Control.ShowInformation(message); } // Disable control if post has already been published or is faulty Control.Enabled = !(post.IsPublished || post.IsFaulty); } }
/// <summary> /// OnBeforeSave event. /// </summary> private void Control_OnBeforeSave(object sender, EventArgs eventArgs) { LinkedInPostInfo post = Control.EditedObject as LinkedInPostInfo; if (post == null) { return; } if (post.LinkedInPostID <= 0) { // The post is being created, not edited return; } if (!LinkedInPostInfoProvider.TryCancelScheduledPublishLinkedInPost(post)) { // The post has been published during user edit. Prevent the changes to take effect CancelPendingSave(Control.GetString("sm.linkedin.posts.msg.editforbidden")); } }
/// <summary> /// Form OnBeforeDataRetrieval. /// </summary> private void Form_OnBeforeDataRetrieval(object sender, EventArgs eventArgs) { if (!HasUserModifyPermission) { return; } if (chkPostToLinkedIn.Checked) { if ((PostInfo == null) || PostInfo.IsEditable) { // Post does not exist or can be modified PostInfo = SetControlDataIntoPost(PostInfo); LinkedInPostInfoProvider.SetLinkedInPostInfo(PostInfo); } else if (!FormDataEqualsPostInfo(PostInfo)) { mPublishedWhileEditing = true; } } else { // Checkbox post to LinkedIn is not checked if (PostInfo != null) { if (PostInfo.IsEditable) { // Existing post has to be deleted LinkedInPostInfoProvider.DeleteLinkedInPostInfo(PostInfo); PostInfo = null; InitializeControls(); } else { mPublishedWhileEditing = true; } } } }
/// <summary> /// Gets localized message describing post state. /// </summary> /// <param name="postId">Post id.</param> private object GetPostState(int postId) { switch (Control.ObjectType) { // Facebook post case FacebookPostInfo.OBJECT_TYPE: FacebookPostInfo facebookPost = FacebookPostInfoProvider.GetFacebookPostInfo(postId); return(FacebookPostInfoProvider.GetPostPublishStateMessage(facebookPost, MembershipContext.AuthenticatedUser, SiteContext.CurrentSite, true)); // LinkedIn post case LinkedInPostInfo.OBJECT_TYPE: LinkedInPostInfo linkedInPost = LinkedInPostInfoProvider.GetLinkedInPostInfo(postId); return(LinkedInPostInfoProvider.GetPostPublishStateMessage(linkedInPost, MembershipContext.AuthenticatedUser, SiteContext.CurrentSite, true)); // Twitter post case TwitterPostInfo.OBJECT_TYPE: TwitterPostInfo twitterPost = TwitterPostInfoProvider.GetTwitterPostInfo(postId); return(TwitterPostInfoProvider.GetPostPublishStateMessage(twitterPost, MembershipContext.AuthenticatedUser, SiteContext.CurrentSite, true)); } return(String.Empty); }
/// <summary> /// Shows given LinkedIn post's publish state. /// </summary> /// <param name="post">LinkedIn post.</param> private void ShowPostPublishState(LinkedInPostInfo post) { string message = LinkedInPostInfoProvider.GetPostPublishStateMessage(post, MembershipContext.AuthenticatedUser, CurrentSite); if (String.IsNullOrEmpty(message)) { return; } if (post.IsFaulty) { var errorMessage = FormatErrorMessage(message); ShowError(errorMessage); } else if (post.IsPublished) { ShowConfirmation(message); } else { ShowInformation(message); } }
/// <summary> /// Shows given LinkedIn post's publish state. /// </summary> /// <param name="post">LinkedIn post.</param> private void ShowPostPublishState(LinkedInPostInfo post) { string message = LinkedInPostInfoProvider.GetPostPublishStateMessage(post, MembershipContext.AuthenticatedUser, CurrentSite); if (String.IsNullOrEmpty(message)) { return; } if (post.IsFaulty) { ShowPostStateError(message); ShowError(String.Format("<strong>{0}</strong>: {1}", GetString("sm.linkedin.autopost"), message)); } else if (post.IsPublished) { ShowPostStateSuccess(message); } else { ShowPostStateInformation(message, MessageTypeEnum.Information); } }