/// <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);
    }
Example #2
0
    /// <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;
                }
            }
        }
    }
Example #8
0
    /// <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);
        }
    }