Ejemplo n.º 1
0
        /// <summary>
        /// Ascertain valid article number
        /// Link to article
        /// Indicate item is locked
        /// </summary>
        /// <param name="articleNumber"></param>
        /// <param name="prompt">Flag to prompt user if problem occurs</param>
        public bool CheckOut(string articleNumber, bool prompt = true)
        {
            if (articleNumber.IsNullOrEmpty())
            {
                MessageBox.Show
                    (@"Please enter an article number to link to.", @"Informa",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            try
            {
                bool exists = SitecoreClient.DoesArticleExist(articleNumber);
                if (!exists && prompt)
                {
                    MessageBox.Show
                        (@"Article number entered does not exist.", @"Informa",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
                ArticleNumber = articleNumber;
                //uxArticleNumberLabel.Text = articleNumber;

                PluginModels.CheckoutStatus checkedOut = SitecoreClient.GetLockedStatus(articleNumber);

                if (!checkedOut.Locked)
                { //if unlocked, then lock it by current user
                    if (SitecoreClient.DoesArticleHaveText(articleNumber) && prompt)
                    {
                        DialogResult dialogResult = MessageBox.Show
                                                        (@"This article already has some content uploaded. "
                                                        + @"If you choose to check out the article now and later upload, "
                                                        + @"you will overwrite that content. "
                                                        + @"Are you sure you wish to checkout this article?",
                                                        @"Informa",
                                                        MessageBoxButtons.YesNo,
                                                        MessageBoxIcon.Question);
                        if (dialogResult != DialogResult.Yes)
                        {
                            return(false);
                        }
                    }
                    SitecoreClient.CheckOutArticle(articleNumber, SitecoreUser.GetUser().Username);
                }
                SetCheckedOutStatus();
                if (_parent.CloseOnSuccessfulLock && IsCheckedOutByMe)
                {
                    return(true);
                }
                //establish link, regardless of lock status
                _parent.SetArticleDetails(SitecoreClient.ForceReadArticleDetails(articleNumber));
                _parent.UpdateFields();
                return(true);
            }
            catch (Exception ex)
            {
                Globals.SitecoreAddin.LogException("Error in article details when checking out article: [" + articleNumber + "]", ex);
                throw;
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// This method is used to perform the lock action. This is called when "Yes" is clicked in the lock confirmation box.
 /// </summary>
 public void LockYesActionMethod()
 {
     if (SitecoreClient.CheckOutArticle(_articleNumber, SitecoreUser.GetUser().Username))
     {
         _articleInformationControl.CheckWordDocVersion(_parent.ArticleDetails);
     }
     SetCheckedOutStatus();
 }
Ejemplo n.º 3
0
        void OpenArticleInformationWindowIfNeeded(Word.Document doc)
        {
            var props = new DocumentCustomProperties(doc);

            if (props.PluginName != Constants.InformaPluginName)
            {
                return;
            }
            string articleNumber = props.ArticleNumber;

            if (!string.IsNullOrEmpty(articleNumber))
            {
                Log("Document opened with article number: " + articleNumber);
                if (!SitecoreUser.GetUser().IsLoggedIn)
                {
                    ArticleDetail.Open(true);
                }
                else
                {
                    CheckoutStatus checkedOut = SitecoreClient.GetLockedStatus(articleNumber);
                    if (checkedOut.User == SitecoreUser.GetUser().Username)
                    {
                        DocumentProtection.Unprotect(props);
                        return;
                    }
                    if (!checkedOut.Locked)
                    {
                        if (DialogFactory.PromptAutoLock() == DialogResult.Yes &&
                            SitecoreClient.CheckOutArticle(articleNumber, SitecoreUser.GetUser().Username))
                        {
                            DocumentProtection.Unprotect(props);
                        }
                    }
                    else
                    {
                        ArticleDetail.Open();
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private void uxSaveMetadata_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            var command = articleDetailsPageSelector.pageWorkflowControl.GetSelectedCommandState();

            // Checking for Taxonomy is the workflow state is final
            if (command.SendsToFinal && articleDetailsPageSelector.GetTaxonomyCount() < 1)
            {
                MessageBox.Show(@"Select at least one taxonomy item for the article!", @"Informa", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            try
            {
                if (articleDetailsPageSelector.pageWorkflowControl.uxUnlockOnSave.Enabled)
                {
                    workflowChange_UnlockOnSave = articleDetailsPageSelector.pageWorkflowControl.uxUnlockOnSave.Checked;
                }

                var articleDate = articleDetailsPageSelector.GetDate();

                //var timeUtc = DateTime.UtcNow;
                //TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
                DateTime currentTime = DateTime.Now;// TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);

                if (articleDate < currentTime)
                {
                    var result = WantsToSetArticleDateToNow(command);
                    if (result == DialogResult.Yes)
                    {
                        articleDetailsPageSelector.SetDate(DateTime.Now, true);
                    }
                    else if (result == DialogResult.Cancel)
                    {
                        MessageBox.Show("Save cancelled.");
                        return;
                    }
                }

                SuspendLayout();

                var  isPublished = ArticleDetails.IsPublished;
                Guid guidCopy    = ArticleDetails.ArticleGuid;
                ArticleDetails             = articleDetailsPageSelector.GetArticleDetailsWithoutDocumentParsing();
                ArticleDetails.ArticleGuid = guidCopy;
                ArticleDetails.IsPublished = isPublished;
                ArticleDetails.IsPublished = ArticleDetails.IsPublished;
                ArticleDetails.ArticleSpecificNotifications = articleDetailsPageSelector.pageWorkflowControl.GetNotifyList();

                ArticleDetails.WordCount        = SitecoreAddin.ActiveDocument.ComputeStatistics(0);
                ArticleDetails.CommandID        = articleDetailsPageSelector.pageWorkflowControl.GetSelectedCommand();
                ArticleDetails.NotificationText = articleDetailsPageSelector.pageWorkflowControl.GetNotificationText();

                var lockStateBeforeSaveMetaData = SitecoreClient.GetLockedStatus(ArticleDetails.ArticleGuid);
                SitecoreClient.SaveMetadataToSitecore(ArticleDetails.ArticleNumber, _structConverter.GetServerStruct(ArticleDetails));
                //I know the following checks are weird, but issue IIPP-1031 occurs sometimes only on UAT env. So had to hack around it.
                //On UAT after SaveMetadataToSitecore, the locked status becomes false for no apparent reason.
                var lockStateAfterSaveMetaData = SitecoreClient.GetLockedStatus(ArticleDetails.ArticleGuid);
                if (lockStateBeforeSaveMetaData.Locked && lockStateAfterSaveMetaData.Locked == false && workflowChange_UnlockOnSave == false)
                {
                    SitecoreClient.CheckOutArticle(ArticleDetails.ArticleNumber, SitecoreUser.GetUser().Username);
                }

                if (articleDetailsPageSelector.pageWorkflowControl.uxUnlockOnSave.Checked)
                {
                    articleDetailsPageSelector.pageArticleInformationControl.CheckIn(false);
                }
                articleDetailsPageSelector.pageWorkflowControl.UpdateFields(ArticleDetails.ArticleGuid != Guid.Empty
                                                ? SitecoreClient.GetWorkflowState(ArticleDetails.ArticleGuid)
                                                : SitecoreClient.GetWorkflowState(ArticleDetails.ArticleNumber), ArticleDetails);
                articleDetailsPageSelector.pageRelatedArticlesControl.PushSitecoreChanges();
                articleDetailsPageSelector.UpdateFields();
                articleDetailsPageSelector.ResetChangedStatus(true);

                UpdateFieldsAfterSave();
                DocumentPropertyEditor.WritePublicationAndDate(SitecoreAddin.ActiveDocument, articleDetailsPageSelector.GetPublicationName(), articleDetailsPageSelector.GetProperDate());

                //TamerM - 2016-03-22: Prompt and ReExport  NLM FEED
                NLMFeedUtils.PromptAndReExportNLMFeed(ArticleDetails.ArticleNumber, ArticleDetails.IsPublished);

                if (workflowChange_UnlockOnSave)
                {
                    EnablePreview();
                    uxCreateArticle.Visible = false;
                }
                articleStatusBar1.RefreshWorkflowDetails();

                MessageBox.Show(@"Metadata saved!", @"Informa");
            }
            catch (WebException wex)
            {
                AlertConnectionFailure();
                Globals.SitecoreAddin.LogException("Web connection error when saving metadata!", wex);
            }
            catch (Exception ex)
            {
                Globals.SitecoreAddin.LogException("Error when saving meta data!", ex);
                MessageBox.Show(@"Error when saving metadata! Error recorded in logs.", @"Informa");
            }
            finally
            {
                ResumeLayout();
                Cursor = Cursors.Default;
                workflowChange_UnlockOnSave = false;
            }

            Document activeDocument = SitecoreAddin.ActiveDocument;
            var      path           = activeDocument.Path;

            if (!activeDocument.ReadOnly && !string.IsNullOrWhiteSpace(path))
            {
                WordUtils.Save(activeDocument);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Checks out article associated with _parent.ArticleDetails.ArticleGuid
        /// </summary>
        /// <returns></returns>
        public bool CheckOut(bool prompt = false)
        {
            Guid articleGuid = _parent.ArticleDetails.ArticleGuid;

            if (articleGuid == Guid.Empty)
            {
                MessageBox.Show
                    (@"No article associated with file.", @"Informa",
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            try
            {
                bool exists = SitecoreClient.DoesArticleExist(articleGuid);
                if (!exists)
                {
                    MessageBox.Show
                        (@"Article no longer exists on Sitecore", @"Informa",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
                ArticleNumber = _parent.ArticleDetails.ArticleNumber;
                //uxArticleNumberLabel.Text = ArticleNumber;


                PluginModels.CheckoutStatus checkedOut = SitecoreClient.GetLockedStatus(articleGuid);

                if (SitecoreClient.DoesArticleHaveText(articleGuid) && prompt)
                {
                    DialogResult dialogResult = MessageBox.Show
                                                    (@"This article already has some content uploaded. "
                                                    + @"If you choose to check out the article now and later upload, "
                                                    + @"you will overwrite that content. "
                                                    + @"Are you sure you wish to checkout this article?",
                                                    @"Informa",
                                                    MessageBoxButtons.YesNo,
                                                    MessageBoxIcon.Question);
                    if (dialogResult != DialogResult.Yes)
                    {
                        return(false);
                    }
                }
                if (!checkedOut.Locked)
                {
                    if (_parent.CloseOnSuccessfulLock)
                    {
                        if (DialogFactory.PromptAutoLock() == DialogResult.Yes)
                        {
                            SitecoreClient.CheckOutArticle(articleGuid, SitecoreUser.GetUser().Username);
                        }
                    }
                    else
                    {
                        SitecoreClient.CheckOutArticle(articleGuid, SitecoreUser.GetUser().Username);
                    }
                }
                SetCheckedOutStatus();
                if (_parent.CloseOnSuccessfulLock && IsCheckedOutByMe)
                {
                    return(true);
                }
                //establish link, regardless of lock status
                _parent.SetArticleDetails(SitecoreClient.ForceReadArticleDetails(articleGuid));
                _parent.UpdateFields();
                return(true);
            }
            catch (Exception ex)
            {
                Globals.SitecoreAddin.LogException("Error in article details when checking out article: " + articleGuid, ex);
                throw;
            }
        }