/// <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; } }
public void IndicateCheckedOutByMe(PluginModels.CheckoutStatus checkedOut) { DocumentProtection.Unprotect(_documentCustomProperties); IsCheckedOutByMe = true; if (_parent.CloseOnSuccessfulLock && CheckWordDocVersion(_parent.ArticleDetails, false)) { _parent.Close(); return; } _parent.CloseOnSuccessfulLock = false; //uxLockStatus.BackColor = Color.FromArgb(255, 217, 234, 211); //uxLockUser.Text = FormatUserName(checkedOut.User); _parent.PostLinkEnable(); //uxUnlockButton.Visible = true; //uxLockButton.Visible = false; //uxUnlockButton.Enabled = true; }
/// <summary> /// Enables/disables some controls since it's so similar to a PreLinkEnable state /// </summary> /// <param name="checkedOut"></param> public void IndicateCheckedOutByOther(PluginModels.CheckoutStatus checkedOut) { //uxLockStatus.BackColor = Color.FromArgb(255, 244, 204, 204); //uxLockUser.Text = FormatUserName(checkedOut.User); IsCheckedOutByMe = false; _parent.PreLinkEnable(); IndicatedUnfavoredLink(); _parent.EnablePreview(); _parent.HideCreationButtons(); //_parent.articleStatusBar1.up _parent.articleStatusBar1.ChangeLockButtonStatus(LockStatus.Locked); //IndicatedUnfavoredLink(); DocumentProtection.Protect(_documentCustomProperties); }
/// <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; } }